我有一个应用程序,它消耗了很多我在单独的 MyInterfaces.d.ts 文件中定义的自定义对象和数组。这个文件看起来像这样:
export type IGenericObj = {
[key: string]: any;
}
export interface IReactJsonObj {
component: string;
key: number;
props: {
className?: string;
id: number;
to?: string;
query?: string;
src?: string;
alt?: string;
height?: number;
children?: IReactJsonObj[];
};
}
export interface IReactSideProps {
amount: number;
height: number;
name: string;
width: number;
}
现在,在我的每个文件中,我想要使用这些定义,我必须将它放在我的文件的顶部:
import { IGenericObj, IReactJsonObj, IReactSideProps } from '../../../../../../types/MyInterfaces';
必须有更好的方法吗?我希望这些定义可以在我的项目中随处可用,因为我一直在使用它们,所以厌倦了把它放在我的tsconfig.json文件中:
"typeRoots": [
"../../../../../../types/MyInterfaces",
"./node_modules/@types"
]
但是现在我仍然陷入困境,我应该如何在我的某个文件中使用 IGenericObj ?如果我开始输入IGene ...它没有在智能系统中显示任何内容,我也无法使用它,因为它未定义,就像我可以承诺一样示例
答案 0 :(得分:0)
typeRoots
应该引用目录,而不是文件。尝试"../../../../../../types"
,并确保路径是相对于项目根目录而不是您尝试使用这些类型的文件。
此外,如果您希望全局而非通过导入使用这些类型,则应使用declare
而不是export
。我个人认为这对我来说有点太全局变量,但它可能适合你的用例。