如何定义导入变量类型

时间:2017-03-23 21:04:41

标签: typescript

对于我的TypeScript编译器,我noImplicitAny设置为true。当我使用像下面这样的导入时,它会抛出一个错误,因为我没有明确定义foo变量的类型:

import * as foo from "bar";

我可以使用CommonJS require语法为foo定义类型:

const foo: FooType = require("bar");

有没有办法使用foo语法为import * as ...定义类型?

1 个答案:

答案 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.