TS DataType
TypeScript有13中数据类型
布尔值(Boolean)
- 最基本的数据类型就是简单的 true/ false值,在 JavaScript和 TypeScript里叫做 boolean(其它语言中也一样)。
let isDone: boolean = false;
数字(Number)
- 和 JavaScript一样, TypeScript里的所有数字都是 浮点数。这些 浮点数的类型是 number。
- 除了支持 十进制和 十六进制字面量, TypeScript还支持 ECMAScript2015中引入的 二进制和 八进制字面量。
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
字符串(String)
- 可以使用双引号( ")或单引号( ')表示字符串
let color: string = 'blue’;let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }`;
标记(Symbol)
- 自 ECMAScript2015起, symbol成为了一种新的原生类型,就像 number和 string一样。
- symbol类型的值是通过 Symbol构造函数创建的
let sym1 = Symbol();
let sym2 = Symbol('key’); // 可选的字符串key
- Symbols是不可改变且唯一的。
let sym3 = Symbol('key');
let sym4 = Symbol('key');
sym3 === sym4; // false, symbols是唯一的
- symbols也可以被用做对象属性的键。
let sym = Symbol();
let obj = {[sym]: 'value',
};
console.log(obj[sym]); // "value"
- Symbols也可以与计算出的 属性名声明相结合,来声明对象的属性和类成员。
const getClassNameSymbol = Symbol();
class C {[getClassNameSymbol]() {return 'C';}
}
let c = new C();let className = c[getClassNameSymbol](); // "C"
数组(Array)
- TypeScript像 JavaScript一样可以操作数组元素。
- 有两种方式可以定义数组。
- 第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组:
let list: number[] = [1, 2, 3];
- 第二种方式是使用数组泛型, Array<元素类型>:
let list1: Array<number> = [1, 2, 3];
元组(Tuple)
- 元组类型允许表示一个 已知元素数量 和 类型的数组,各元素的类型不必相同。
// 比如,你可以定义一对值分别为 string和 number类型的元组。
// Declare a tuple type
let x: [string, number];// Initialize it
x = ['hello', 10]; // OK// Initialize it incorrectly
x = [10, 'hello']; // Error// 当访问一个已知索引的元素,会得到正确的类型:
console.log(x[0].substring(1)); // OK
console.log(x[1].substring(1)); // Error, 'number' does not have 'substring'// 超出
x[3] = 'world'; // Error, Property '3' does not exist on type '[string, number]'.
console.log(x[5].toString()); // Error, Property '5' does not exist on type '[string, number]'.
枚举(Enum)
- enum类型是对 JavaScript标准数据类型的一个补充。像 C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字
enum Color {Red,Green,Blue,
}
// 默认情况下,从 0开始为元素编号。
let c: Color = Color.Green; // 1// 手动的指定成员的数值
enum Color {Red = 1,Green,Blue,
}
let c: Color = Color.Green; // 2// 或者,全部都采用手动赋值:
enum Color {Red = 1,Green = 2,Blue = 4,
}
let c: Color = Color.Green; // 2// 初始其中一个值
enum Color {Red = 1,Green,Blue,
}let colorName: string = Color[2];
console.log(colorName);
// 显示'Green'因为上面代码里它的值是2// 指定枚举值为字符串
const { log } = console;
enum Color {Red = 'rRed',Green = 'rGreen',Blue = 'rBlue',
}
const c: Color = Color.Red; // 1
log(c); // rRed
log(Color.Green); // rGreen
log(Color.Blue); // rBlue// 请注意这边如果将枚举值指定为非 number类型的值,
// 则需要每个枚举值都进行手动赋值,否则就会报错 Enummember must have initializer.。
enum Color {Red = 'rRed',Green,Blue,
} // Enum member must have initializer.// 注意这边如果将枚举值指定为非 number类型的值,则需要每个枚举值都进行手动赋值,
// 同时,除了 number类型,手动赋值的类型需要为同一种类型
// fine-好的
enum Color {Red = 0,Green = 'rGreen',Blue = 'rBlue',
}// Computed values are not permitted in an enum with string valued members.
enum Color {Red = true,Green = 'rGreen',Blue = 'rBlue',
}// 指定枚举值为布尔值
enum Color {Red = 0,Green = true, // Type 'true' is not assignable to type 'Color'Blue = false, // Type 'false' is not assignable to type 'Color'
}// 指定枚举值为 null和 undefined
enum Color {Red = 0,Green = null, // Type 'null' is not assignable to type 'Color'Blue = undefined, // Type 'undefined' is not assignable to type 'Color'
}// 指定枚举值为 array和 object
enum Color {Red = 0,Green = [], // Type 'never[]' is not assignable to type 'Color'Blue = {}, // Type '{}' is not assignable to type 'Color'
}// 指定枚举值为 symbol
const sys = Symbol();
enum Color {Red = 0,Green = sys, // Type 'unique symbol' is not assignable to type 'Color'.Blue, // Type '{}' is not assignable to type 'Color'
}
任意类型(Any)
- 想要为那些在编程阶段还不清楚类型的变量指定一个类型。这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。
- 不希望 类型检查器对这些值进行检查而是直接让它们通过 编译阶段的检查。可以使用 any类型来标记这些变量
- any类型是十分有用的,允许你在编译时可选择地包含或移除类型检查。
let notSure: any = 4;
notSure = 'maybe a string instead';
notSure = false; // okay, definitely a booleanlet notSure: any = 4;
notSure.ifItExists(); // TSLint will not throw Error, okay, ifItExists might exist at runtime
notSure.toFixed(); // TSLint will not throw Error, okay, toFixed exists (but the compiler doesn't check)// Object类型的变量只是允许你给它赋任意值,但是却不能够在它上面调用任意的方法,即便它真的有这些方法:
let prettySure: Object = 4;
prettySure.toFixed(); // TSLint will throw Error: Property 'toFixed' does not exist on type 'Object'.
null
- 在
JavaScript
中null
表示 "什么都没有",是一个只有一个值的特殊类型,表示一个空对象引用, - 默认情况下
null
和undefined
是所有类型的子类型,可以把null
和undefined
赋值给number
类型的变量
undefined
undefined
表示一个没有设置值的变量- 默认情况下
null
和undefined
是所有类型的子类型,可以把null
和undefined
赋值给number
类型的变量
<aside>
TS DataType相关推荐
- php datatype=quot;requirequot;,我的问题谁能帮我解决一下??
葬2017-12-05 08:34:432楼 这是use.php namespace app\index\controller; use app\index\controller\Base; use ...
- ts定义html是什么类型,TypeScript—类型定义文件(*.d.ts)
一.ts文件中引入jquery. 1.大家是否有再vue 上使用过 ts,并再 .ts文件中引用过 jquery 1.1是不是遇到过如下问题: import $ from 'jquery'; /*** ...
- vue3+ts+element-plus(包含vuex、router) 随笔
#vue3与vue2区别以及vue3优点 默认进行懒观察(lazy observation)在 2.x 版本里,不管数据多大,都会在一开始就为其创建观察者.当数据很大时,这可能会在页面载入时造成明显的 ...
- vue3.0+TS使用
ts+ref //定义简单数据类型 //需要注意,指定了一个泛型参数但没有给出初始值,那么最后得到的就将是一个包含 undefined 的联合类型: // 推导得到的类型:Ref<boolean ...
- 灯鹭cc在TS的box.load函数下无妨显示的尴尬解决方法
TS开源程序建立在thinkphp框架之上.其中的ui函数封装了淘宝的kissy.ui.box.load可以以弹出页面的形式引用一个页面.如下: load:function(data,option,t ...
- react + ts 下的开发经验汇总
学习过java语言,才发现类型标注的重要性,在前端,js最让人诟病的便是无类型规范,可以随意赋值和改变类型等,这样项目出现bug的几率大大增加,而js的超集typescript完美解决了这个问题.(别 ...
- TypeScript入门篇——基础知识(快速了解js与ts差异)
写在前面 本篇文章是我初学typescript的笔记,希望可以为看到的朋友提供帮助. 推荐视频:https://www.bilibili.com/video/av38379328/?p=14& ...
- egg extend ts_KPL官方给各战队排T次:大王DYG,AG是老2、TS仅K
点击蓝色关注 更多精彩内容等你~ 2020KPL秋季赛常规赛前两周比赛已经圆满结束了,而第3周比赛也已经正式开打了.KPL常规赛的赛程已经过去5分之1了!而KPL官方根据各大KPL战队截至目前的表现, ...
- vue 后台返回的文件流进行预览_基于 Vue3+Ts 后台前端管理系统Vue3-Admin
今天再给大家分享一款超不错的Vue中后台管理系统Vue3Admin. vue3-admin 基于VueCli4+Ts+ElementUI构建的后台系统.采用组件化开发模式及Flex布局,支持移动端适配 ...
最新文章
- [译] 写给前端开发者的 GraphQL 指南
- WebGIS在行业中应用的演变
- 计算机网络-OSPF协议
- AOP开发——在不修改源代码的前提下,对类里面的方法进行增强 : 前置 后置 环绕 异常||如何得到目标方法的参数和返回值
- 实训09.08:简单的算法练习
- CSS之中间固定两边自适应宽度
- 《零基础》MySQL GROUP BY 语句(十九)
- WordPress删除重复文章插件
- 详解Oracle临时表的几种用法及意义
- HUAS 1482 lsy的后宫(DP+矩阵快速幂)
- Atitit J2EE平台相关规范--39个 3.J2SE平台相关规范--42个
- 集成电路设计专业有计算机课程吗,集成电路属于什么专业大类 什么学科
- PCB布局布线注意事项
- 计算机主机序列,SCCM任务序列自动根据SN号命名计算机
- 学编程c语言高考能加分吗,编程已列入中高考,孩子升学加分的机会你抓住了么?...
- 【计算机网络】-- 第一章--概述(概念、组成、功能、分类、性能指标、体系结构)
- 五个喜欢点赞图标动画特效(附源码,效果图)
- 【数据安全】数据脱敏解决方案
- 阿里云ACP云计算认证通过总结
- 【每天一个 Linux 命令】网络相关命令(ifconfig、route、ping、traceroute、netstat、ss、telnet、rcp、scp)
热门文章
- usb2.0、usb3.0、usb3.1、type-c 接口含义与区别
- 2021年11月网络规划设计师上午试题
- 潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)...
- centos6.5 安装hadoop1.2.1亲测版
- AutoFac+MVC+WebApi源码----我踩过的坑
- The 15th UESTC Programming Contest Preliminary D - Destr0y City cdoj1558
- Jlink-v8 灯不亮重新烧写固件的办法
- Flutter打包iOS上传 AppStore ERROR ITMS-90432: “Invalid Swift Support. The file Runner.app/Frameworks/.l
- #pragma mark 基本使用
- 分支限界法|Branch and Bound Method(0-1背包问题)