enum
枚举值可以用enum声明类型
1 | enum E_SEX { |
interface
接口是一系列抽象方法的声明
也可用于对象的类型声明
1 | interface IProps { |
可选值
1 | interface IProps { |
value属性是可选的,值可以是空对象
1 | const props: IProps = {}; |
联合类型
可以通过管道(|)将变量设置为联合类型
value的类型可以是string或者number
1 | const value: string | number = 1; |
type
1 | type TName = number; |
补充:typescript 中的 interface 和 type 到底有什么区别?
数组
两种声明都可以
1 | const list: number[] = []; |
函数
1 | function f(value: number): number { |
extends
继承
1 | interface IProps { |
&
交叉类型
1 | interface IProps1 { |
namespace
命名空间可以解决重名问题
1 | namespace NameSpace { |
元组
用来表示已知元素数量和类型的数组。
1 | const list: [string, number] = ['1', 1]; |
never 类型
never是其它类型(包括null和undefined)的子类型,代表从不会出现的值。
这意味着声明为never类型的变量只能被never类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)
1 | let x: never; |
泛型
1 | interface IProps<T> { |
Omit<T, K>
Omit<T, K>
类型让我们可以从对象类型中剔除某些属性,从而创建新的对象类型。
1 | interface IProps { |
声明文件
1 | declare const jQuery: (selector: string) => any; |
在React中使用TypeScript
这篇文章总结得不错: