无法使用typescript导入默认值
有一个名为“resize observer polyfill”的库,它声明它有一个默认导出:无法使用typescript导入默认值,typescript,webpack,Typescript,Webpack,有一个名为“resize observer polyfill”的库,它声明它有一个默认导出: declare var ResizeObserver: { prototype: ResizeObserver; new(callback: ResizeObserverCallback): ResizeObserver; } export default ResizeObserver; 但我无法导入此库,因为TS抱怨 import ResizeObserver from 'resize-o
declare var ResizeObserver: {
prototype: ResizeObserver;
new(callback: ResizeObserverCallback): ResizeObserver;
}
export default ResizeObserver;
但我无法导入此库,因为TS抱怨
import ResizeObserver from 'resize-observer-polyfill'
// If I do this instead, TS is happy but ResizeObserver is undefined !!
import * as ResizeObserver from 'resize-observer-polyfill'
TS配置摘录:
, "compilerOptions":
{ "jsx": "react"
, "module": "commonjs"
, "noImplicitAny": true
, "outDir": "output/dist"
, "reactNamespace": "JSX"
, "sourceMap": true
, "strictNullChecks": true
, "target": "es6"
}
使用allowSyntheticDefaultImports可以使类型和运行时愉快,但许多导入都会失败(使用ts jest),除非我将SkipAbel设置为true
使用skipabel
选项,此导入在具有未定义值的测试中失败,我必须在测试中使用import*作为ResizeObserver
语法
正确的方法是什么?为什么会如此混乱?尝试第一种语法(从“resize observer polyfill”导入ResizeObserver
),其中allowSyntheticDefaultImports
和esModuleInterop
在tsconfig.json
中都设置为true。您需要前者来允许import ResizeObserver
而不是import*as ResizeObserver
,我认为您可能需要后者,因为您的目标是es6
我发现这对理解这一点非常有帮助。尝试从“resize observer polyfill”导入{ResizeObserver}我相信您必须声明一个与库同名的模块。