TypeScript 声明文件与esModuleInterop一起发出,如果不使用它,将无法消费,

798qvoo8  于 4个月前  发布在  TypeScript
关注(0)|答案(3)|浏览(42)

TypeScript版本: 3.2.0-dev.20181019
搜索词:
代码

import abs from "abs"; // using @types/abs which uses `export =`
export const x: typeof abs = <any>null;

预期行为:

输出 .d.ts 是:

import abs = require("abs");
export declare const x: typeof abs;

实际行为:

import abs from "abs";
export declare const x: typeof abs;

在DefinitelyTyped中发现了quill,它从quill-delta导入,而quill-deltawritten in TypeScript,具有esModuleInterop

xpcnnkqh

xpcnnkqh1#

这完全是因为我们努力不重写人们的代码,因此在声明发射时,我们保留了它们需要互操作的导入样式。我不确定这是个错误还是只是不幸?我知道在新声明发射器之前,它会属于“不幸”的类别,因为我们也对noImplicitAny有同样的问题;但是新的声明发射器通过在任何缺少它们的any上添加注解来解决所有这些问题。所以在同一思路下,我可以设想我们改变我们的发射以自动修复这个问题。

0ejtzxu1

0ejtzxu12#

IMO - 这是自动生成的声明文件的预期行为。
您会认为您的生成的声明应该是“普遍”可消费的,但到目前为止 - 它们不幸地不是:(
我很高兴看到这个问题得到解决(假设我可以称之为一个bug)。

fhg3lkii

fhg3lkii3#

Bump. It would be great if this was fixed. 😄

相关问题