我正在尝试从外部类型扩展我自己的一种类型。
因为我真的不知道我在做什么,所以我将它们放在global.d.ts文件中。
在执行此操作之前,我一直在将类型导入到项目中的每个打字稿文件中,这似乎是错误和杂乱的(每个文件顶部有30个导入行)。
global.d.ts文件在我只有我的代码时可以使用
// successfully can use this anywhere
interface IPerson {
name: string
}
如果我的类型需要扩展一个外部的类型,我的理解就会停止。
(例如,我将尝试扩展Redux操作类型)。
/// <reference path="../node_modules/redux/index.d.ts" />
interface IPerson {
name: string
}
// even with the reference typescript 'cannot find name Action'
interface PersonAction extends Action {
person?: IPerson
}
如果我将文件更改为
,我可以成功获取打字稿以停止抱怨无法找到“名称操作”import * as Redux from 'redux';
interface IPerson {
name: string
}
interface PersonAction extends Redux.Action {
person?: IPerson
}
现在除了使用IPerson的每个文件都无法再找到它。我不明白为什么。每当我向声明文件添加导入时,它都会破坏其他所有内容,但会修复声明文件。
我在这里做错了什么?我正在寻找一个可以放置所有类型的地方,如果有更好的方法来获取打字稿以识别我的类型我会接受其他选项。
答案 0 :(得分:0)
我认为您需要export
模块中的界面:
import * as Redux from 'redux';
export interface IPerson {
name: string
}
export interface PersonAction extends Redux.Action {
person?: IPerson
}
然后import
在使用地点相同:
import {IPerson, PersonAction} from 'your-module'
P.S。虽然这不是问题,但您可能需要loose the 'I' from the name of interfaces。