typescript 如何扩展类的定义?

厦门是我在开发中遇到的问题:

1. 使用 ts 写的项目还需要 d.ts 文件么?

2. 我在一个文件内定义了一个类,但是动态的往这个类上会挂载方法,我如何能够扩展这个类呢?因为我直接挂方法会没有提示

阅读 7.3k
2 个回答
  1. .d.ts文件可以配置tsconfig.json自动生成,编写第三方库时可以方便应用引入这个库时直接有代码提示(而不是需要额外装一个@types/xxx这种形式)。另外如果要用到一个全局变量(比如webpack.DefinePlugin定义的变量),这个变量直接用时编辑器会提示未定义,此时就可以新建一个.d.ts手动加上这个实际存在变量的声明declare const xxx
  2. 动态给类加方法本就不符合typescript的规矩,老老实实重新定义一个类然后extends旧类。(强行以js方式加方法有效但是会报警告,需要转any类型且没提示)。

通过合并声明来实现

class Foo {
  public foo() { console.log('foo'); }
}

// 删掉这个定义将报错
interface Foo {
    bar: () => void;
}

Foo.prototype.bar = () => { console.log('bar'); }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进