Typescript 阻止接口具有名为X的属性

Typescript 阻止接口具有名为X的属性,typescript,interface,Typescript,Interface,我有这个界面: interface Config { height : number; width : number; [propName : string] : any; } 正如您所看到的,我有[propName:string]:any,它允许我拥有任何其他属性,但我需要禁止使用name键的属性 换句话说,我希望允许除key以外的任何其他属性。您可以添加其他属性key?:未定义到Config: 注意:从不替换为未定义,因为未定义|从不解析为未定义,所以最后没关系。哈

我有这个界面:

interface Config {
    height : number;
    width : number;
    [propName : string] : any;
}
正如您所看到的,我有[propName:string]:any,它允许我拥有任何其他属性,但我需要禁止使用name键的属性


换句话说,我希望允许除key以外的任何其他属性。您可以添加其他属性key?:未定义到Config:


注意:从不替换为未定义,因为未定义|从不解析为未定义,所以最后没关系。哈哈,你是对的。我想写一些像type Config={…}&而不是{key:any}这样的带有否定类型的东西。如果还必须排除key:undefined,那么可能需要引入一个带有键检查条件类型的类型参数,并在函数中使用该类型
interface Config {
    height: number;
    width: number;
    key?: undefined; // add this line
    [propName: string]: any;
}

const res1: Config = { height: 3, width: 4, me: "too" } // works
const res2: Config = { height: 3, width: 4, me: "too", key: "dsaf" } // error