Javascript 组织类型脚本定义以避免重复代码
当前情况: 在中定义了一个类: lib/components/widgets/MyWidget.ts: 它被编译成javascript,作为lib-min.js的一部分与其他文件捆绑在一起 因此,因为它位于lib/components/widgets/MyWidget.ts中,所以我创建了一个定义“集合”文件(mydefinition.d.ts),如下所示: 通过这种方式,它可以像这样使用(当然是在将lib-min.js包含到页面中之后): 问题: 我认为很明显,保持这种重复是压倒性的,很容易导致错误。 同样在升级到TypeScript2+(从1.8.9)之后,我得到了几个“重复标识符”的编译错误,并且通常它不像以前那样工作Javascript 组织类型脚本定义以避免重复代码,javascript,typescript,module,typescript-typings,requirejs-optimizer,Javascript,Typescript,Module,Typescript Typings,Requirejs Optimizer,当前情况: 在中定义了一个类: lib/components/widgets/MyWidget.ts: 它被编译成javascript,作为lib-min.js的一部分与其他文件捆绑在一起 因此,因为它位于lib/components/widgets/MyWidget.ts中,所以我创建了一个定义“集合”文件(mydefinition.d.ts),如下所示: 通过这种方式,它可以像这样使用(当然是在将lib-min.js包含到页面中之后): 问题: 我认为很明显,保持这种重复是压倒性的,很容易导
- 我可以创建一个像IMyWidget这样的接口,并将其公开,但这样的实现就会丢失,无法使用新的
- 我可以从mydefinition.d.ts中删除“declare module…”,但是模块加载器将找不到该模块(因为r.js优化器根据其路径命名该模块)
export class MyWidget {
public property1: string;
/* ... more properties ... */
}
declare module "lib/components/widgets" {
export class MyWidget {
/* documentation of property1 */
public property1: string;
/* ... more properties ... */
}
}
interface MyOption {/* ... */}
import { MyWidget } from "lib/components/widgets/MyWidget";
let myInstance = new MyWidget();