async方法内Promise变量的IntelliSense提示属性异常问题咨询
这个现象是IntelliSense的正常补全机制表现,并非你的代码存在逻辑问题,多余的提示属性也不属于Promise实例本身的自有属性。
多余属性的来源主要有两点
- 你在初始化Promise实例时传入了
null作为执行器参数,该写法不符合Promise构造函数的类型要求(需要传入一个接收resolve、reject参数的回调函数),会导致TypeScript类型收窄失效。IntelliSense在类型判断不严格的场景下,会自动将当前作用域、全局作用域内所有可访问的标识符都纳入补全候选池,就会出现很多和当前实例无关的属性提示。 - async函数的上下文本身有异步返回值的类型优先级,IntelliSense会额外将全局Promise的静态属性、当前模块内所有异步相关的类型属性都加入补全候选,进一步放大了多余提示的问题。
修复方案
你只需要把Promise的初始化代码修改为符合类型要求的写法,比如:
const asyncMethod = async () => { let a : Promise<string> = new Promise((res) => res('测试值')) }
或者在tsconfig.json中开启strict: true严格模式,强制TypeScript做严格的类型收窄,就能让IntelliSense的提示恢复为仅包含Promise实例的标准属性(then、catch、finally等)。
内容的提问来源于stack exchange,提问作者Jolly
相关产品推荐
相关产品推荐

