对象文字中的动态键访问导致打字稿签名变宽

问题描述 投票:4回答:1

对于以下代码:

const x = {
    a: 'c',
    b: 'd'
};

const y = {
    [x.a]: 'e',
}

生成的类型是:

typeof x -> {
    a: string,
    b: string
}

typeof y -> {
  [x: string]: string
}

期望类型:

typeof y -> {
  c: string
}

SO上的类似issue具有此处不相关的解决方案

[在Github上找到了报告的issue,该消息说这是固定的,但是不起作用]

对于以下代码:const x = {a:'c',b:'d'}; const y = {[xa]:'e',}生成的类型为:typeof x-> {a:字符串,b:字符串} typeof y-> {[x:字符串]:...

typescript
1个回答
2
投票
这是因为typeof x.a实际上是一个字符串。在此,x是常数,但是x.a的值可以更改为任何字符串值。
© www.soinside.com 2019 - 2024. All rights reserved.