如何定义导入变量类型

2024-03-09

I have noImplicitAny set to true对于我的 TypeScript 编译器。当我使用如下所示的导入时,它会抛出错误,因为我没有显式定义类型foo多变的:

import * as foo from "bar";

我能够定义一个类型foo使用 CommonJS require 语法:

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

有没有办法定义一个类型foo使用import * as ... syntax?


我相信你的意思是...

import * as foo: IFoo from "foo"

or

import foo : IFoo from "foo"

准确吗?

对此进行了讨论,但最终决定反对。 https://github.com/Microsoft/TypeScript/issues/2709

相反,建议您declare module 'bar'并给它适当的打字。一旦完成,您将能够import * as foo from "bar"通过正确的打字。

有关推荐方法的更多详细信息,请参阅此问题 https://github.com/Microsoft/TypeScript/issues/6615

一个潜在的例子:

无类型.d.ts

declare module "bar" {
    const foo:IFoo;
    export = foo;
}

tsconfig.json

{
    "compilerOptions": {
        ...
    },
    "include": [
        "untyped.d.ts",
        "src/**/*.ts",
        "src/**/*.tsx"
    ]
}

名称“untyped.d.ts”在这里没有真正的含义,我个人只是将它用作我个人项目中非类型化模块的总称。请随意命名它,只要您觉得合适即可。

附注您还可以选择使用files数组属性而不是include为此,但我倾向于不打扰,因为files不尊重exclude财产,这让一些人感到困惑。有关详细信息,请参阅文档。 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何定义导入变量类型 的相关文章