TypeScript 入门 | 青训营笔记

81 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第6天

JavaScriptTypeScript
动态类型静态类型
弱类型语言弱类型语言

基础语法

定义对象

基本数据类型
const 常量名: 常量类型 = 常量值
对象类型

对象名首字母一般为大写的i

const bytedancer: IBytedancer = {
    属性名:属性值;
}

interface IByteddancer{
属性名:属性类型;
属性名:可选属性值1 | 可选属性值2 | 可选属性值3;
/*只读属性:在对象初始化后不能再对其值进行更改*/
readonly 只读属性名:只读属性类型;
/*可选属性:在对象初始化的时候可以不进行定义*/
可选属性名 ?: 可选属性类型;
/*任意属性:约束所有对象属性都必须是该属性的子类型*/
[key: string]:any;
}

函数类型

function add(x:number,y:number):number{
    return x+7;
}
/*第二种写法*/
const mult: (x:number,y:number) => number = (x,y) => x*y;

数组类型

  1. 类型+方括号表示
    type IArray1 = number[];
  2. 泛型表示
    type IArray2 = Array < string | number | Record<string.number>>
  3. 元组表示
    type IArray3 = [number,number,string,string]
  4. 接口表示
    interface IArray4{ [key:number]:any; }

补充类型

  • 空类型,无赋值
    type IEmptyFunction() = () => void;
  • 任意类型,是所有类型的子类型
    type IAnyType = any;
  • 枚举类型,支持枚举值到枚举名的正、反向映射
    enum EnumExample{add = '+',mult = '*'}
  • 泛型:不预先指定类型,到使用的时候再指定具体的类型,也可以加泛型约束

函数重载

image.png 但这一种写法有些冗余,因此多采用下一种写法: image.png

高级类型

  1. 联合类型:表示一个值可以是几种类型之一
  2. 交叉类型:多种类型叠加在一起成为一种类型,它包含了所需的所有类型的特性
  3. 类型保护
  4. 类型守卫:定义一个函数,它的返回值是一个类型调用,生效范围为子作用域
  5. 函数返回值类型

联合类型+类型保护 = 自动类型推断