TypeScript esmoduleinterop: 改进在类上调用静态方法时的错误信息

ss2ws0br  于 5个月前  发布在  TypeScript
关注(0)|答案(3)|浏览(83)

TypeScript版本: master
代码
b.d.ts:

declare class C { static m(): void }
declare namespace C {}
export = C;
import * as C from "./b";
C.m();

预期行为:

src/a.ts(1,1): error TS7038: A namespace-style import will import a module namespace object, not a class.
src/a.ts(2,3): error TS2339: Property 'm' does not exist on type 'typeof C'.

实际行为:

src/a.ts(2,3): error TS2339: Property 'm' does not exist on type 'typeof C'.

jfewjypa

jfewjypa1#

如果我们在构造JSX节点时也这样做就好了。对于import * as C ... <C> </C>,我们应该在导入语句处添加一个错误。

2lpgd968

2lpgd9682#

另外,如果为这种情况添加另一个诊断代码,那么快速修复可以更新为建议该修复。这是一个简单的检查是否有属性不存在错误的更改,然后检查是否有 defaultdefault 具有该成员。如果是,则发出替代诊断,否则发出正常诊断。(技术上可以将此泛化为建议非默认命名成员内的成员,如果其他名称对齐,但我认为这并不十分有用)

omhiaaxx

omhiaaxx3#

instanceof中使用时也是如此。

相关问题