元素隐式具有任何类型 [英] Element implicitly has an 'any' type

查看:21
本文介绍了元素隐式具有任何类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆