阅读ts文档的笔记

1. 基础类型

ts的类型都是小写的,有别于js

与js相同的类型

1. 布尔值 boolean
2. 数字 number
3. 字符串 string
4. 数组 number[]、Array<元素类型>
5. undifined 其他类型可以赋值为 undifined 但是undfined类型的变量无法赋值为其他类型的值。然而,当你指定了--strictNullChecks标记,null和undefined只能赋值给void和它们各自。
6. null 同上

额外的基础类型

1. 元组 Tuple:一个已知元素数量和类型的数组;`let x: [string, number]`
2. 枚举 enum
    枚举类型可以赋值多种类型,默认是number类型。手动赋值number类型可以不用全部赋值,未赋值的按前面的递增。手动赋值非number类型其他的成员必须都需要手动赋值。**但赋值为number类型可以反推成员名**。枚举成员不能具有数值名。
``` ts
    enum Color {Red='r', Green='a', Blue='s'}
    let c: Color = Color.Green;
```
编译为js后
``` js
   var Color;
  (function (Color) {
    Color["Red"] = "r";
    Color["Green"] = "a";
    Color["Blue"] = "s";
     })(Color || (Color = {}));
    var c = Color.Green;
```
3. 任意值 编译时躲避检查,可以赋值任何属性,调用任何方法
4. 空值 声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null
5. Never 表示的是那些永不存在的值的类型 。我理解的有两种**定义函数返回值**的场景,1函数死循环 、2函数报错中断执行

类型断言
断言后,编译器会按照断言的类型进行检查
情况1:尖括号表示法

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;

情况2

let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;

2. 变量声明

一个方法使用了该方法声明后才声明的变量,在变量声明后执行该方法能够获取到变量正确的值。

function greeting(){
    console.log(name)
}
let name = 'huang'
greeting() // 输出: 'huang'

令人困惑的解构和重命名

const person = { age: 1, name: "huang" };
const { age: age2, name: name2 }: { age: number; name: any } = person;

在解构中无法给成员指出类型,只能在解构外定义。

3. 接口

接口用来定义一种数据解构的别名

posted @ 2019-12-28 16:57  菜鸡_chicken  阅读(311)  评论(0)    收藏  举报