d.ts文件中,为什么只要一引入了其他模块的类型,定义的外部成员就全部失效

如题,定义了两个外部接口,ObjectID是其他模块中的类型,提示需要引入才能使用,但是添加import { ObjectID } from 'xxx'引入后,其他使用了这个文件里的接口的文件直接报错,提示找不到定义的类型

1.d.ts

// import { ObjectID } from 'xxx'

declare interface Article {
    title: string
    content: string
}
  
declare interface ArticleCollection {
    _id?: string
    articleId: string
    userId: ObjectID    // 提示这个类型需要引入模块
}

2.ts

let article: Article = {    // 如果1.d.ts中引入了ObjectID,这里就会报错说找不到类型Article
    title: 'test',
    content: 'abc'
}
阅读 10.3k
2 个回答

hi~ ts不建议在声明文件中使用import的方式引入类型变量,建议使用三斜线指令

假设你的ObjectID文件为 obj.d.ts, 
在1.d.ts文件里的最顶部使用 /// <reference path="obj.d.ts" />
然后在tsconfig.json 加入如下代码:
"typeRoots": [
    "./1.d.ts",
],
然后就可以在正常文件中使用而不用import了。

~~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏