对于我的TypeScript编译器,我noImplicitAny
设置为true
。当我使用像下面这样的导入时,它会抛出一个错误,因为我没有明确定义foo
变量的类型:
import * as foo from "bar";
我可以使用CommonJS require语法为foo
定义类型:
const foo: FooType = require("bar");
有没有办法使用foo
语法为import * as ...
定义类型?
答案 0 :(得分:10)
我相信你的意思是......
import * as foo: IFoo from "foo"
或
import foo : IFoo from "foo"
这是准确的吗?
This was discussed, but ultimately decided against.
相反,建议您declare module 'bar'
并给它适当的输入。完成后,您将能够import * as foo from "bar"
正确输入。
See this issue for more details on the recommended approach
一个潜在的例子:
<强> untyped.d.ts 强>
declare module "bar" {
const foo:IFoo;
export = foo;
}
<强> tsconfig.json 强>
{
"compilerOptions": {
...
},
"include": [
"untyped.d.ts",
"src/**/*.ts",
"src/**/*.tsx"
]
}
名称&#34; untyped.d.ts&#34;这里没有任何实际意义,我个人只是将它用作个人项目中无类型模块的一部分。随意给它起任何合适的名称。
P.S。您也可以选择使用files
数组属性而不是include
,但我倾向于不打扰,因为files
并不尊重exclude
属性让一些人感到困惑。 See the docs for details.