下面的代码可以工作,但是VS Code Typescript编译器显示错误,说**“Type 'String' cannot be used as an index type”**。但是如果你使用一个字符串文字而不是一个变量句子['a-string'],Typescript不会抱怨这一点。
我对代码很满意,但是我怎么才能让错误消失呢?还是有别的方法来访问句子[显示]?
const props = defineProps<{
sentence: Sentence,
display: String,
}>()
<div v-html="sentence[display]" />
它可以工作,但Typescript错误仍然存在。
3条答案
按热度按时间de90aj5v1#
你可以试着告诉typescript对象可以被字符串索引,比如
83qze16e2#
你可以把这个加进去
或者你甚至可以做
Sentence
接口并在里面添加键值正如@Estus Flask所说,字符串和字符串不是一回事
gjmwrych3#
可以将
display
声明为Sentence
的一个键:当您向
display
传递错误值时,这将向您提供给予错误消息,并允许IDE提供建议值。如果
Sentence
没有固定键(即type Sentence = {[key: string]: any}
,但是具体对象的键是可以推断的,你可以使用泛型来确定具体键:这样,当
display
的值与对象的某个键不匹配时,您再次得到错误。一个警告:Vue目前无法推断模板中的正确类型,即在模板中写入
{{ sentence[display] }}
会产生错误。但是你可以用一个计算器来绕过它。