我需要一个接口来描述一个总是包含一个函数的数据结构,但是可以包含任意数量的属性,这些属性都具有string的值 . 我知道这样的事情在理论上起作用:

declare interface Profile {
    getXml: () => string;
    [key: string]: string | Function;
}

但是,该接口不是100%准确,并且使得使用该类型的对象更加困难,因为我无法在不先检查或转换的情况下将该接口的属性分配给字符串 .

有没有什么方法可以指定一个接口有一组具有自己唯一值类型的已知键,然后对于该对象上可能存在的其他所有内容都有'catch-all'?提出的解决方案here要求使用 any ,这比我的更糟糕 .

请参阅this Playground了解为什么有些选项不起作用 .

请参阅this Playground以查看通过this工作的选项 .