IDE找不到声明的全局类型

时间:2018-07-27 13:51:15

标签: typescript types import tsconfig

我有一个全局输入文件,可以在其中定义类型,变量等...

现在项目结构如下:

trunk
   typings
     index.d.ts
   src
     Example.ts
     Example.d.ts
   tsconfig.json

index.d.ts中,我要说

declare type userInfo = {
    username: string,
    password: string,
}

但是在Example.d.ts中,当我直接使用userInfo时,IDE表示找不到该名称,而tsc编译器未显示任何错误。

declare class Something {
   ...
   getUserInfo: () => userInfo; // <--- this is highlighted red
}

有趣的是,当我在userInfo中使用Example.ts时,没有突出显示的错误。

另一个有趣的事情是,当我go to the declaration跳转到index.d.ts的正确行时

我不会在两个文件中都导入类型,因为它们是global类型。

我的tsconfig文件如下:

{
    "compilerOptions": {
        ...
        "typeRoots": ["./typings"],
        ...
    },
    ...
}

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

您不应声明类型。当您要指出全局变量范围中有一些 javascript 类(因此,Typescript无法看到它)时,声明很有用。例如:

declare class UserInfo {...} // typings.d.ts

现在您应该使用的只是常规type

type UserInfo = {...} // Example.ts

更好的是,我建议您使用界面,因为UserInfo类型似乎很简单:

// Example.ts
interface UserInfo {
  username: string,
  password: string,
} 

请随时问我您是否没得到东西