我正在尝试使用猫鼬模式进行更好的键入,但是似乎SchemaTypeOpts
接口具有[other: string]: any;
,这会阻止vcsode intellisense帮助我。
为解决这个问题,我尝试了以下方法,希望它可以标识动态专有性创建的密钥(因为其名称为other
):
const x: Pick<SchemaTypeOpts<any>, Exclude<keyof SchemaTypeOpts<any>, "other">> = {
bob: "", // expected an error here
type: String
}
但是当界面具有动态属性时,看来Exclude
并没有真正起作用:/
例如: 这有效:
interface test2 {
x?: number,
y?: string,
z?: number,
}
const x: Pick<test2, Exclude<keyof test2, "z">> = {
y: "",
z: 5, // got error here because z is excluded
bob: "" //got error here because bob is not in the interface
}
这什么都不做:
interface test2 {
x?: number,
y?: string,
z?: number,
[other: string]: any;
}
const x: Pick<test2, Exclude<keyof test2, "z">> = {
y: "",
z: 5,
bob: ""
}
如何在不重新声明整个内容的情况下从界面中删除[other: string]: any
?