我目前正在努力使用类型定义,并将其从我们的项目中导出。
当前需求: 我不会使用其他模块名称导出类型定义。如果我用手写的话就可以了
//src/@types/custom/foo/module.d.ts
declare module "@custom/foo" {
class Foo {
name: string;
constructor(name: string);
}
export = Foo
}
//consumer.ts
import Foo from "@custom/foo"
const test = new Foo("Foo is my Name")
test.name //gives me autocomplete
但是当我想使用tsc
生成的类型定义时,我得到以下输出
//src/foo.ts
export default class Foo {
public name: string
constructor(name : string) {
//do stuff here
this.name = name
}
}
//src/@types/@myCustom/foo/foo.d.ts
export default class Foo {
name: string;
constructor(name: string);
}
,然后将module.d.ts修改为
//src/@types/custom/foo/module.d.ts
import Foo from "./foo"
declare module "@custom/foo" {
export = Foo
}
Typescript无法在我的使用者中解析它。
//consumer.ts
import Foo from "@custom/foo" //Cannot find module "@custom/foo". ts(2307)
const test = new Foo("Foo is my Name")
console.log(test.name)
那么为什么tsc
生成的类型定义不是有效的声明,或者还有另一种方法可以实现我的目标呢?
这是一个包含我的测试的github存储库: https://github.com/42tg/custom-definition-module