提问者:小点点

如何使用打字稿在函数参数中扩展对象类型?


假设我有一个类型

type Template = {
    a: string;
    b: string;
    c: string
}

我想在函数中使用它,但我想为其添加额外的参数。实施它的最佳方法是什么?

当我尝试扩展它时,打字稿显示?预期

我是这么做的

const test = (template: Template extends { d: string }[]) => {
    template.map(t => console.log(t.d));
}

附言我不使用[key: string]: string这种类型


共2个答案

匿名用户

无法扩展类型。参考此已接受的答案

你可以这样解决你的问题

type Template = {
    a: string;
    b: string;
    c: string
}

type NewTemplate = Template & { d: string }

const test = (template: NewTemplate[]) => {
    template.map(t => console.log(t.d));
}

匿名用户

如果你不想用

const test = <T extends Template>(template: T[]) => {
    template.map(t => console.log(t.d))
}