IDE未找到声明的全局类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDE未找到声明的全局类型相关的知识,希望对你有一定的参考价值。

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

现在项目结构是这样的:

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"],
        ...
    },
    ...
}

可能是什么问题?

答案

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

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

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

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

更好的是,我建议你在你的情况下使用接口,因为UserInfo类型似乎很简单:

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

如果你没有得到什么,请随时问我

以上是关于IDE未找到声明的全局类型的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段8——声明函数

输出未显示我试图在全局声明数组中进行的更改

JS作用域作用域链

如何声明列表全局?想要在适配器的片段中使用

由于未找到 ID 错误的视图,列表片段未出现

viewpager 中的片段,未找到视图错误