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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何故意在打字稿中定义一个“空接口”相关的知识,希望对你有一定的参考价值。

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

interface MyInterface {
  key: string
}

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

会失败的

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

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

interface EmptyInterface {
}

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

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

答案

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

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

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

以上是关于如何故意在打字稿中定义一个“空接口”的主要内容,如果未能解决你的问题,请参考以下文章

如何在打字稿中正确导入自定义类型

我将如何在打字稿中定义这个对象?

如何在打字稿中为 const 定义重载签名?

如何在打字稿中定义敲除绑定处理程序?

我如何在打字稿中定义这个对象?

如何从打字稿中的标记联合类型中提取类型?