我有以下功能:

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};
};

typescriptlib.d.ts似乎在使用类型别名,而angular2代码似乎在使用接口。我的问题是什么时候用什么?我在做决定时应该使用什么逻辑呢?还是这是一个偏好问题?

最佳答案

当前typescript中的类只能实现interfaces而不能实现任意类型。因此,一般来说,如果希望其他类能够将类型用作要实现的对象,则应使用接口。同样,接口只能extend其他接口。
在接口的反面,它们不能表示交集或并集类型,因此如果您希望在一个类型中这样做,那么您将陷入类型别名的困境。

07-24 09:44
查看更多