Typescript 创建具有最小属性集的类型

Typescript 创建具有最小属性集的类型,typescript,Typescript,我想创建类型Foo,使用所需的最小属性blah 举例来说: interface Foo { blah: string; } f: Foo = {blah: "lol"} 但是,我想要的是,如果属性blah不存在,则会提到一个错误 如果Foo的属性多于blah f: Foo = {boo: "lol"} // property blah is missing f: Foo = {blah: "lol", boo: "lol"} // this is fine 总之,将我在接口中提到

我想创建类型
Foo
,使用所需的最小属性
blah
举例来说:

interface Foo {
    blah: string;
}

f: Foo = {blah: "lol"}
但是,我想要的是,如果属性
blah
不存在,则会提到一个错误 如果
Foo
的属性多于
blah

f: Foo = {boo: "lol"} // property blah is missing

f: Foo = {blah: "lol", boo: "lol"} // this is fine
总之,将我在接口中提到的属性作为一组最小的属性

我如何实现这一点(它不能与我的
Foo
界面一起工作,如上所述)。

这样做可以:

interface Foo {
    blah: string;
    [name: string]: string;
}

let f1: Foo = {boo: "lol"} // error
let f2: Foo = {blah: "lol", boo: "lol"} // fine
这样做是否可以:

interface Foo {
    blah: string;
    [name: string]: string;
}

let f1: Foo = {boo: "lol"} // error
let f2: Foo = {blah: "lol", boo: "lol"} // fine

如果我做对了,你可以指定基本上允许用字符串索引对象是的。因为您希望在
Foo
实例中有更多(未知)属性,而不是
blah
。因为它们事先不知道,所以你需要使用索引。如果我做对了,你可以指定基本上允许用字符串索引对象。因为您希望在
Foo
实例中有更多(未知)属性,而不是
blah
。因为它们事先不知道,所以需要使用索引。