never
在TS中,有一个很特殊的类型,就是never,never只能在两种情况下使用
- 函数永远不会有返回值时,例如 while(true){}
const [n,setN] = React.useState<number>(1)
const add: ()=>never = () => {
while(true){ setN(i=>i+1) }
}
- 函数永远会抛出一个错误时。
const fn: ()=>never = () => {
throw new Error('error')
}
- 与void的差异 void 和 never 都是表示一个函数没有返回值,但是他们之间最大的区别是,void 表示可以被赋值的类型,never表示其他任何类型也不能被赋值给它,它只能是never
interface 和 type 的区别
- interface 只能声明 函数/对象
interface X {
a: number
b: string
}
interface Y {
() => void
}
- type 除了能声明 对象/函数 以外,还能为基础类型声明别名
type X = number | string
- interface 能声明后进行合并
interface X {
a: string
b: number
}
interface X {
c: boolean
}
// X = {
a: string
b: number
c: boolean
}