在使用symbol时,必须添加ES6编译辅助库 "lib": ["es6"]
BigInt (能够存储和操做大整数) 在使用时,须要添加ESNext的编译辅助库 "lib": ["ESNext"]
nknown 和 any 的主要区别是 unknown 类型会更加严格:在对unknown类型的值执行大多数操做以前,咱们必须进行某种形式的检查, 而在对 any 类型的值执行操做以前,咱们没必要进行任何检查
htmllet value: any; value.foo.bar; // OK let value: unknown; value.foo.bar; // ERROR
never 类型表示的是那些永不存在的值的类型,never 类型是任何类型的子类型,也能够赋值给任何类型; 然而,没有类型是 never 的子类型或能够赋值给 never 类型(除了never自己以外) 注:即便any也不能够赋值给never。
// 抛出异常的函数永远不会有返回值 function error(message: string): never { throw new Error(message); } // 空数组,并且永远是空的 const empty: never[] = []
数组有两种类型定义方式,一种是使用泛型:
const list: Array<number> = [1, 2, 3]
另外一种使用更加普遍那就是在元素类型后面接上
[]: const list: number[] = [1, 2, 3]
es6
元组类型与数组类型很是类似,表示一个已知元素数量和类型的数组,各元素的类型没必要相同json
let x: [string, number]; x = ['hello', 10, false] // Error x = ['hello'] // Error x = [10, 'hello'] // Error x = ['hello', 10] // ok interface Tuple extends Array<string | number> { 0: string; 1: number; length: 2; } const tuple: [string, number] = ['a', 1]; tuple.push(2); // ok console.log(tuple); // ["a", 1, 2] -> 正常打印出来 console.log(tuple[2]); // Tuple type '[string, number]' of length '2' has no element at index '2'
object 表示非原始类型,也就是除 number,string,boolean,symbol,null 或 undefined 以外的类型。