TS在声明的时候进行严格检查,赋值的时候比较松
type:类型别名
- 声明函数:可以单独声明一个
函数
,也可以声明一个带属性的函数
type Fn = () => void
type FnWithProps = {
(a:number,b:number) : number
props: string
}
const fnWithProps: FnWithProps = (x,y)=> x*y
fnWithProps.props = "frank"
interface 声明接口,描述对象的属性
interface X {
age: number
}
interface A1 extends Array<string>,X {
name: string
}
type A2 = Array<string> & {name:string} & X
interface Fn {
(a:number,b:number): number
name: string
}
const fn:Fn = (x,y) => x*y
fn.name = "xxx"
区别
-
type
可以描述基本类型和对象,interface
只能描述对象,不能描述基本类型
-
type
不可以重复声明,不可以重新赋值,interface
可以重复声明,会自动合并
- type继承是
&
,interface继承是extends
- 因此,我们工作时,对外api尽量使用interface,方便扩展;对内api尽量使用type,防止代码分散
网友评论