元素隐式具有任何类型 [英] Element implicitly has an 'any' type
本文介绍了元素隐式具有任何类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
This demo使typeof Symbol.toStringTag
类型symbol
:
const promise = Promise.resolve();
const toStr: typeof Symbol.toStringTag | void = typeof Symbol === 'function' ? Symbol.toStringTag : undefined;
if (toStr) {
console.log(promise[toStr] === 'Promise');
}
并导致错误:
元素隐式具有""any""类型,因为""Symbol""类型的表达式不能用于索引类型""Promise""。(7053)
有没有办法缩小toStr
符号类型,而不是像promise[Symbol.toStringTag]
那样显式使用符号?
推荐答案
表示我没有收到相同的错误,但我在控制台上打印了true
,并显示了以下compilerOptions
"compilerOptions": {
"declaration": true,
"module": "commonjs",
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"target": "es6"
}
既然您知道typeof Symbol.toStringTag === "symbol"
,为什么不呢?
const promise = Promise.resolve();
const toStr: symbol | void = typeof Symbol === "function" ? Symbol.toStringTag : undefined;
if(toStr) console.log(promise[toStr] === "Promise");
曾经说过,我认为关键是suppressImplicitAnyIndexErrors
编译选项。不知道这对您是否是合理的妥协。
希望这能有所帮助
这篇关于元素隐式具有任何类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文