当我导入一些数据并将鼠标悬停在变量上时,它显示的是'typeof import "/some/path"'
而不是变量列表。
我希望它能显示列表以启用自动完成等功能。
我做了一个例子项目。
如果您将鼠标悬停在该项目index.ts
中的theme1
上,它会显示变量:typeof import("some/path");
发生的方式是:
文件夹中有命名为exports的文件。有一个索引。Ts文件,导出该文件夹中的所有内容:
//stuff/variables/index.ts
export * from '.';
.
//stuff/variables/vars1.ts
const stuff1 = 'stuff1';
const stuff2 = 'stuff2';
const stuff3 = 'stuff3';
export { stuff1, stuff2, stuff3 };
父文件夹中的文件从该索引中导入所有内容。Ts文件,并将其导出为一个变量:
//stuff/index.ts
import * as variablesData from './variables/index';
export const vars = variablesData;
另一个文件导入该变量并将其包含在导出对象中:
//stuff/theme.ts
import { vars } from './index';
const obj = {
blue: 'blue',
};
export const theme1 = {
...obj,
vars,
};
最后,顶部索引。
//index.ts
import { theme1 } from './stuff/theme';
console.log(theme1);
如果我将鼠标悬停在导入的变量上,它不会列出变量,而是显示typeof import("some/path");
所以export * from '.'
不能被智能感知解析。我能不能用"export ">
?可以通过添加一些类型或以不同的方式书写来帮助解决这个问题吗?
我相信你所描述的是Typescript本身的一个bug/缺失的特性。虽然我没有在github问题中找到它,但在那里做了一个超快速搜索。
你可以直接在vars1.ts
文件中定义vars
变量。
//stuff/variables/vars1.ts
const stuff1 = 'stuff1';
const stuff2 = 'stuff2';
const stuff3 = 'stuff3';
const vars = { stuff1, stuff2, stuff3 };
export { stuff1, stuff2, stuff3, vars };
然后调整索引文件
//stuff/index.ts
export { vars } from './variables/index';
和你的智能感知会很好地工作。
是的,这种方法比你做的要多一点,但至少类型现在可以工作了:)。