我有以下功能:
function (n: number) {
return {s: n};
}
我需要为签名创建一个验证器。据我所知,我有两个选择:
接口
interface ValidatorFnInterface {
(n: number): {
[key: string]: any;
};
}
类型别名
type ValidatorFnType = (n: number) => {
[key: string]: any
};
它们可以这样使用:
let f1: ValidatorFnInterface = function (n: number) {
return {s: n};
};
let f2: ValidatorFnType = function (n: number) {
return {s: n};
};
typescript
lib.d.ts
似乎在使用类型别名,而angular2代码似乎在使用接口。我的问题是什么时候用什么?我在做决定时应该使用什么逻辑呢?还是这是一个偏好问题? 最佳答案
当前typescript中的类只能实现interfaces
而不能实现任意类型。因此,一般来说,如果希望其他类能够将类型用作要实现的对象,则应使用接口。同样,接口只能extend
其他接口。
在接口的反面,它们不能表示交集或并集类型,因此如果您希望在一个类型中这样做,那么您将陷入类型别名的困境。