基础类型
除了string、number、boolean、null、undefined
特殊的:symbol
当然有句好记的顺口溜,你可以试着记下,nssbnu(你是傻白妞)
特别的
-
string
// es6 写法 let age: number = 20; console.log(`I am ${age + 1} years old`);
-
number
和js一样,ts中的所有数字都是浮点数。这些浮点数的类型是number,所以需要留意小数点的精度问题。
let increaseNum = 0.01 let count: number = 20 let timer = setInterval(() => { increaseNum += 0.01 console.log(increaseNum) if (increaseNum > 0.15) { clearInterval(timer) } }, 1000);
输出(简单讲就是10进制通过2进制存储【这里出现问题】-- 小数点后的数通过乘2取个位,然后在10进制显示):
tips: 可以通过math.js 或者 currency.js 进行解决
-
undefined 和 null
在指定了–strictNullChecks 或者 strict 时,
null
和undefined
只能赋值给void
和它们自身。 -
symbol
由Symbol函数创建,唯一的且是不可变的,系统也有内置的symbols,如
Symbol.hasInstance
等。let sym1 = Symbol(); let sym2 = Symbol("key"); // 可选的字符串key let sym3 = Symbol("key"); console.log(sym2 === sym3); // false, symbols是唯一的
其它常用类型:
-
枚举
// 直接声明,其实内部都是健值对 enum HBody {Leg, Head, Foot} // 默认从值从0开始 console.log(Body.Leg) // 0 // 全字符串赋值 enum HBody {Leg='leg', Head = 'head', Foot = 'foot'}; console.log(HBody.Leg); // leg // 数字与字符串混搭 enum HBody {Leg, Head, Foot = 'foot'}; console.log(HBody.Leg); // 0 console.log(HBody.Foot); // foot // tips:当值为数字时,可以进行反向查找,如: enum HBody {Leg, Head, Foot = 'foot'}; console.log(HBody[1]) // Head
-
object
除6种基础类型外的 其它可作为值的类型
let o1: object = 1; // 错误 let o2: object = never; // 错误 let o3: object = [1, '2']; // 正确
-
数组
元组:特殊的数组,数组类型和数组个数都固定。当返回数据不多时可用此方法进行数据约束。
let x: [string, number]; x = [2, 'ni']; // 错误 x = ['ni', 2, 'bu']; // 错误 x = ['ni', 2]; // 正确
-
any
严格模式下,两种情况可能会用到:真的不清楚变量是什么类型,不希望类型检查器对某些变量进行检查。
-
never
// 主要用在函数上 // 1. 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); } // 2. 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }