【发布时间】:2021-11-05 06:48:40
【问题描述】:
假设有一个接口限制了对象中可以使用的键或值类型。 例如,这样的接口可以用于存储一些计算。
interface CheckNumberMethods {
[key: string]: (n: number) => boolean
}
因此,在使用某些方法创建实际对象时,我会应用该接口让 IDE 检查类型不匹配。
const myMethods:CheckNumberMethods = {
greaterThanFive: (n: number) => n > 5,
isEven: (n: number) => n % 2 === 0,
}
但是现在对象被MyMethodsType 类型卡住了。虽然我希望该类型代表我创建的实际对象。在此示例中,对象的类型应如下所示:
{
greaterThanFive: (n: number) => boolean;
isEven: (n: number) => boolean;
}
当然,这是自然行为,但是有没有办法在创建对象时进行类型检查,但保留原始对象的类型以供“外部”使用?
在这个例子中,简单地扩展接口并将扩展的接口应用到对象上就可以了,但是在更大的规模或更复杂的类型上就很麻烦了。
【问题讨论】:
标签: typescript types interface