下面出现错误 TS2556,如何修复?
class Test {
constructor(x: number) {}
}
class Test2 extends Test {
constructor(...args) {
super(...args); // TS2556
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用 jsdoc 和 tsc 进行类型检查:
class Test {
constructor(x: number) {}
}
class Test2 extends Test {
constructor(...args) {
super(...args); // TS2556
}
}
Run Code Online (Sandbox Code Playgroud) 如果向函数提供的对象具有太多属性,则会出现错误:
type Options = {
str: "a" | "b",
}
function foo(a: Options) {
return a.str;
}
const resultA = foo({
str: "a",
extraOption: "errors as expected",
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------ Object literal may only specify known properties.
});
Run Code Online (Sandbox Code Playgroud)
这个不错,我想要这个 但因为我知道我将根据其输入返回什么类型,所以我想让该函数变得通用,如下所示:
function bar<T extends Options>(a: T) {
return a.str as T["str"];
}
Run Code Online (Sandbox Code Playgroud)
但现在输入上允许使用额外的属性。
const resultB = bar({
str: "a",
extraOption: "no error!?",
});
Run Code Online (Sandbox Code Playgroud)
有什么办法可以限制这个吗?