接口对象无法扩展 Record<string, unknown>

Bru*_*uce 5 typescript

为什么接口不能扩展 Record

interface Data {
  a: string
}

Data extends Record<string, unknown> ? 'yes' : 'no' // 'no'
Run Code Online (Sandbox Code Playgroud)

但是,如果我将数据更改为输入,则它可以正常工作

type Data {
  a: string
}
 
Data extends Record<string, unknown> ? 'yes' : 'no' // 'yes'
Run Code Online (Sandbox Code Playgroud)

小智 9

type T = Record<string, unknown> 评估为 { [x: string]: unknown; }

对象类型具有隐式索引签名,但接口没有(出于安全原因),因此它们不会扩展索引类型。