1.安装
npm install typescript@next
2.vscode通过创建.vscode/settings.json来使用这个版本;
{
"typescript.tsdk":"./node_modules/typescript/lib"
}
1. TypeScript 有两个“顶层类型”(any
和unknown
),但是“底层类型”只有never
唯一一个
unknown
类型变量能够进行的运算是有限的,只能进行比较运算(运算符==
、===
、!=
、!==
、||
、&&
、?
)、取反运算(运算符!
)、typeof
运算符和instanceof
运算符这几种,其他运算都会报错。可以先把类型确认了再赋值给其他;
let a:unknown = 1;if (typeof a === 'number') {let r = a + 10; // 正确
}
2. ts基本类型
- boolean
true
和false
两个布尔值- string 普通字符串和模板字符串
- number 整数、浮点数和非十进制数
- bigint 大整数带n,如果赋值为整数和小数,都会报错
- symbol Symbol 值
- object 所有对象、数组和函数
- undefined 值
undefined
,表示未定义(即还未给出定义,以后可能会有定义)- null 值
null
,表示为空(即此处没有值)
上面所有类型的名称都是小写字母,首字母大写的Number
、String
、Boolean
等在 JavaScript 语言中都是内置对象,而不是类型名称,String()
只有当作构造函数使用时(即带有new
命令调用),才会返回包装对象。如果当作普通函数使用(不带有new
命令),返回就是一个普通字符串。其他两个构造函数Number()
和Boolean()
也是如此,大写类型同时包含包装对象和字面量两种情况,小写类型只包含字面量,不包含包装对象,建议只使用小写类型,不使用大写类型,TypeScript 把很多内置方法的参数,定义成小写类型,使用大写类型会报错。undefined 和 null 既可以作为值,也可以作为类型;bigint 类型是 ES2020 标准引入的。如果使用这个类型,TypeScript 编译的目标 JavaScript 版本不能低于 ES2020(即编译参数target
不低于es2020;
除了undefined
和null
这两个值不能转为对象,其他任何值都可以赋值给Object
类型,变量obj
的类型是空对象{}
,就代表Object
类型。显然,无所不包的Object
类型既不符合直觉,也不方便使用,object
类型不包含原始类型值,只包含对象、数组和函数;
3. JavaScript 语言中,typeof 运算符是一个一元运算符,返回一个字符串,代表操作数的类型。typeof 是一个很重要的 TypeScript 运算符,有些场合不知道某个变量foo
的类型,这时使用typeof foo
就可以获得它的类型;
4. 元组(tuple)是 TypeScript 特有的数据类型,JavaScript 没有单独区分这种类型。它表示成员类型可以自由设置的数组,即数组的各个成员的类型可以不同。
5. Symbol 是 ES2015 新引入的一种原始类型的值。它类似于字符串,但是每一个 Symbol 值都是独一无二的,与其他任何值都不相等。Symbol 值通过Symbol()
函数生成。在 TypeScript 里面,Symbol 的类型使用symbol
表示。
6. 函数的类型声明,需要在声明函数时,给出参数的类型和返回值的类型。TypeScript 提供 Function 类型表示函数,任何函数都属于这个类型。如果函数的某个参数可以省略,则在参数名后面加问号表示。参数名带有问号,表示该参数的类型实际上是原始类型|undefined
,它有可能为undefined,
参数x
后面有问号,表示该参数可以省略, 函数的可选参数只能在参数列表的尾部,跟在必选参数的后面;
7.