Typescript学习笔记(二)

120 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情 >>>

😮‍💨TS常用类型

原始类型:string,number,boolean

数组:Array

特殊类型:any (当你不希望一个值导致类型检查错误时,可以设置为any)

可选类型:对象类型可以指定一些甚至所有的属性为可选的,你只需要在属性名后添加一个?

联合类型:一个联合类型是由两个或者更多类型组成的类型,表示值可能是这些类型中的任意一个。(类 id: number | string)

😮‍💨变量上的类型注解

当你使用const / var / let 声明一个变量时,你可以选择性的添加一个类型注解,显式指定变量的类型,不过大部分的时候,TS会自动推断类型。

😮‍💨返回值类型注解

你也可以添加返回值的类型注解,返回值的类型注解跟在参数列表后面,跟变量类型注解一样,你也不需要总是添加返回值类型注解,TS会基于它的return语句推断函数的返回类型

😮‍💨接口

接口声明(interface)是命名对象类型的另一种方式,类型别名和接口非常相似,大部分时候,你可以任意选择使用,接口的几乎所有特性都可以在type中使用,两者最关键的差别在于类型别名本身无法添加新的属性,而接口是可以扩展的

(1)通过继承扩展类型

interface Animal {

name: string

}

interface Bear extends Animal {

honey: boolean

}

const bear = getBear()

bear.name

bear.honey

(2)对一个已经存在的接口添加新的字段

interface Window {

title: string

}

interface Window {

ts: TypeScriptAPI

}

const src = 'const a = "Hello World"'; window.ts.transpileModule(src, {});

😮‍💨类型断言

有时候你知道一个值的类型,但是TS不知道,你可以使用类型断言将其指定为一个更具体的类型

你可以使用尖括号语法或 as 语法(尖括号语法不能在.tsx文件内使用)

😮‍💨非空断言操作符(后缀!)

TS提供了一个特殊的语法,可以在不做任何检查的情况下,从类型中移除null和undefined,这就是在任意表达式后面写上!,这是一个有效的类型断言,表示它的值不可能是null或undefined(重要的事情说一遍,只有当你明确的知道这个值不可能是null或undefined时才使用!)

函数

😮‍💨函数类型表达式

最简单描述一个函数的方式是使用**函数类型表达式,写法有点类似箭头函数:

(a:string) => void 表示一个函数有一个名为 a ,类型是字符串的参数,这个函数并没有返回任何值

也可以使用类型别名定义一个函数类型

😮‍💨泛型函数

函数的输出类型依赖函数的输入类型,或者两个输入的类型以某种形式相互关联

在TS中,泛型就是被用来描述两个值之间的对应关系,我们需要在函数签名里声明一个类型参数