ser*_*dat 5 import types typescript tsconfig
我有一个全局输入文件,我在其中定义我的类型,变量等...
现在项目结构是这样的:
trunk
typings
index.d.ts
src
Example.ts
Example.d.ts
tsconfig.json
Run Code Online (Sandbox Code Playgroud)
在index.d.ts我已经让我们说
declare type userInfo = {
username: string,
password: string,
}
Run Code Online (Sandbox Code Playgroud)
但是Example.d.ts当我userInfo直接使用IDE时,它说找不到名字,而tsc编译器没有显示错误.
declare class Something {
...
getUserInfo: () => userInfo; // <--- this is highlighted red
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,当我使用userInfo时Example.ts,没有突出显示的错误.
另一个有趣的事情是,当go to the declaration它跳到正确的行index.d.ts
我不会在两个文件中导入类型,因为它们是global类型.
我的tsconfig文件如下:
{
"compilerOptions": {
...
"typeRoots": ["./typings"],
...
},
...
}
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
您不应该声明类型。当你想要表明全局变量作用域中有一些javascript类(因此 Typescript 无法看到它)时,Declare 很有用。例如:
declare class UserInfo {...} // typings.d.ts
Run Code Online (Sandbox Code Playgroud)
现在你应该使用的是常规的type
type UserInfo = {...} // Example.ts
Run Code Online (Sandbox Code Playgroud)
更好的是,我建议您在您的情况下使用接口,因为 UserInfo 类型似乎很简单:
// Example.ts
interface UserInfo {
username: string,
password: string,
}
Run Code Online (Sandbox Code Playgroud)
如果您没有得到什么,请随时问我
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |