如何故意在打字稿中定义一个“空接口”

时间:2018-03-03 20:02:13

标签: typescript interface

TypeScript允许检查是否检查未知属性。以下

interface MyInterface {
  key: string
}

const myVar: MyInterface = {
  asda: 'asdfadf'
}

将失败

  

输入'{asda:string; }'不能指定为'MyInterface'类型。
  对象文字只能指定已知属性,而'asda'则不能   存在于'MyInterface'类型中。

但是,此语句将编译没有任何问题。 Empty interface will accept any value

interface EmptyInterface {
}

const myVar: EmptyInterface = {
  asda: 'asdfadf'
}

但是,如果我真的想为可能没有任何属性的空对象定义类型,该怎么办?我怎样才能在打字稿中实现这一目标?

1 个答案:

答案 0 :(得分:5)

要定义一个从不拥有任何成员的接口,您可以定义一个返回never的索引器

interface None { [n: string]: never } 
// OK
let d2 : None = {

}
let d3 : None = {
    x: "" // error
}