ts学习笔记

 1.安装

npm install typescript@next

2.vscode通过创建.vscode/settings.json来使用这个版本;

{
"typescript.tsdk":"./node_modules/typescript/lib"
}

1. TypeScript 有两个“顶层类型”(anyunknown),但是“底层类型”只有never唯一一个

unknown类型变量能够进行的运算是有限的,只能进行比较运算(运算符=====!=!==||&&?)、取反运算(运算符!)、typeof运算符和instanceof运算符这几种,其他运算都会报错。可以先把类型确认了再赋值给其他;

let a:unknown = 1;

if (typeof a === 'number') {
  let r = a + 10; // 正确
}

2. ts基本类型 

  • boolean    truefalse两个布尔值
  • string        普通字符串和模板字符串
  • number     整数、浮点数和非十进制数
  • bigint         大整数带n,如果赋值为整数和小数,都会报错
  • symbol       Symbol 值
  • object         所有对象、数组和函数
  • undefined   值undefined,表示未定义(即还未给出定义,以后可能会有定义)
  • null             值null,表示为空(即此处没有值)

上面所有类型的名称都是小写字母,首字母大写的NumberStringBoolean等在 JavaScript 语言中都是内置对象,而不是类型名称,String()只有当作构造函数使用时(即带有new命令调用),才会返回包装对象。如果当作普通函数使用(不带有new命令),返回就是一个普通字符串。其他两个构造函数Number()Boolean()也是如此,大写类型同时包含包装对象和字面量两种情况,小写类型只包含字面量,不包含包装对象,建议只使用小写类型,不使用大写类型,TypeScript 把很多内置方法的参数,定义成小写类型,使用大写类型会报错。undefined 和 null 既可以作为值,也可以作为类型;bigint 类型是 ES2020 标准引入的。如果使用这个类型,TypeScript 编译的目标 JavaScript 版本不能低于 ES2020(即编译参数target不低于es2020;除了undefinednull这两个值不能转为对象,其他任何值都可以赋值给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.

你可能感兴趣的:(学习,前端,typescript)