gpt4 book ai didi

接口(interface)不适合时 typescript 编译器的奇怪行为

转载 作者:行者123 更新时间:2023-12-02 10:46:05 26 4
gpt4 key购买 nike

我不知道如何表达这一点,但是当我在某些情况下使用接口(interface)时,我会得到 Typescript 编译器的这种奇怪行为。

例如,这按预期效果很好。没有编译器错误,什么都没有。

interface Bar {
letter: 'a' | 'b';
}

declare class Foo {
constructor(bars: Bar[]);
}

const foo = new Foo([
{
"letter": "a"
},
{
"letter": "b"
}
]);

但是,如果我在 Bar 之一中添加不必要的参数像这儿:

const foo = new Foo([
{
"letter": "a"
},
{
"letter": "b"
"what": 175875,
}
]);

然后编译器在 上抛出这个意外错误。两个我的 letter参数:
Type 'string' is not assignable to type '"a" | "b"'.

我错过了什么还是某种编译器问题?

最佳答案

这不是编译器错误,从 TypeScript 1.6 开始就是这样,请参阅:Breaking Changes | Strict object literal assignment checking

你需要告诉 typescript 接口(interface)可以有更多这样的属性:

interface Bar {
letter: 'a' | 'b';
[x: string]: any;
}

关于接口(interface)不适合时 typescript 编译器的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56582677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com