TypeScript基础知识| 青训营笔记

67 阅读2分钟

TypeScript基础知识| 青训营笔记

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

是静态类型

  • 可以增强可读性:基于语法解析TSDoc,ide增强
  • 可维护性增强:在编译阶段暴露大部分错误

多人合作的大型项目中,获得更好的稳定性和开发效率

[优点]

  • 程序更容易理解
  • 效率更高
  • 更少的错误

基本语法

原始类型

  • Number
  • String
  • Boolean
  • Undefined
  • Null
  • BigInt(ES6)
  • Symbol(ES6)

字符串

const q:string ='string';

数字

const w:number=1;

布尔值

const e:boolean=ture

null

const r:null=null;

undefined

const t:undefined =undefined;

类型推论:

在没有明确指定类型的时候推测出一个类型

let str = 'str';

联合类型:

可以指定多种类型(但只能访问联合类型所有类型里共有的属性或方法)

let numberOrString:number | string

类型断言:

TypeScript 类型断言用来告诉编译器你比它更了解这个类型

不是类型转换,断言成一个联合类型中不存在的类型是会出现错误的

在不确定类型的时候访问其中一个类型的属性或方法

函数声明


function add(x:number,y:number): number{
    return x+y;
    }
    
const mult:(x:number,y:number)=>number=(x,y)=> x*y;

通过extends对泛型的类型进行约束

类型别名,字面量和交叉类型

1.类型别名

就是给类型起一个别名,让它可以更方便的被重用。

关键字:type

let sum: (x: number, y: number) => number
const result = sum(1,2)
type PlusType = (x: number, y: number) => number
let sum2: PlusType

// 支持联合类型
type StrOrNumber = string | number
let result2: StrOrNumber = '123'
result2 = 123

2.字面量

常量作为类型写在冒号后面,此时冒号前面的变量只能赋值为该常量;

const str:'name' = 'name'//只能等于name 否则报错
const number:1 =1

字面量可以用 | 设置多个,形成固定的赋值范围

// 字符串字面量
type Directions = 'Up' | 'Down' | 'Left' | 'Right'
let toWhere: Directions = 'Up'//只能为其中的四个值

3.交叉类型 (Intersection Types)

对Interface进行扩展 &

interface IName  {
  name: string
}
type IPerson = IName & { age: number }
let person: IPerson = { name: 'hello', age: 12}