簡體   English   中英

如何在 TypeScript 中使用計算屬性名稱?

[英]How to use computed property names in TypeScript?

我收到一條錯誤消息Object literal may only specify known properties, and '[channel]' does not exist in type '{ a: any; b: any; d: any; }' Object literal may only specify known properties, and '[channel]' does not exist in type '{ a: any; b: any; d: any; }' Object literal may only specify known properties, and '[channel]' does not exist in type '{ a: any; b: any; d: any; }'使用帶有傳播的計算屬性名稱時。

這是一個片段:

const color = { a: 1, b: 1, d: 2 }


const func = (channel: 'a' | 'b') => {
  const { a, b, d} = { ...color, [channel]: 9 }
}

你可以在這個游樂場自己嘗試一下

我在這里缺少什么? 或者它是一個已知的錯誤? 如果是這樣,有什么解決方法?

這確實是一個奇怪的錯誤,如果您不想添加像 Automatico 建議的額外變量,您可以設置類型工作示例

const color = { a: 1, b: 1, d: 2 }


const func = (channel: 'a' | 'b') => {
  const { a, b, d}: typeof color = { ...color, [channel]: 9 }
}

不太確定為什么會發生這種情況,但是您應該能夠通過首先將通道數據存儲在變量中來繞過它。

const color = { 'a': 1, 'b': 1, 'd': 2 }

const func = (channel: 'a' | 'b') => {
  const incoming = {[channel]: 9}
  const { a, b, d } = { ...color, ...incoming }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM