我有以下功能:
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代码似乎使用接口。我的问题是什么时候用什么?在决定时是否应该使用任何逻辑,或者这是一个偏好问题?
答案 0 :(得分:4)
目前TypeScript中的类只能实现interfaces
而不是任意类型。所以一般来说,如果你希望其他类能够使用你的类型作为实现的东西,你应该使用接口。同样,接口只能extend
个其他接口。
在接口的负面,他们不能表达交集或联合类型,所以如果你想在一个单一的类型中,你就会遇到类型别名。