我目前使用两个具有相同代码的应用程序用于模型。
我想创建并共享一个使用继承的库模型(Typescript
)。
示例: Pet extends Author
。
在我当前的应用程序(Angular,新的应用程序)中,我需要将属于app域的一些prototypal
函数添加到我的Pet和Author类中。
示例:
pet.extension文件
Pet.prototype[‘fetchUrl’]
author.extension文件
Author.prototype[‘follow’]
所以我创建了一个名为pet.extension
的文件,导入pet.class
我添加域方法,然后导出并使用这些重载的类。
当我创建一个新实例时,我导入了这个扩展名。没问题。我的班级(Pet)有扩展的prototypal
方法。但是,此扩展程序(重载类)使用pet.class
和pet.class extends author.class
而非author.extension
您知道如何创建和使用重载版本的作者吗?
我的最终目标是模拟Swift语言中的等价扩展。保持在我的图书馆中的oop结构。
我希望我很清楚:)
非常感谢你的帮助。
答案 0 :(得分:1)
相对于我之前的帖子,我终于找到了我想要做的确切术语。模块扩充。
import { Model } from ‘my-library’;
declare module ‘my-library’ {
interface Model {
newMethod(): string
}
}
Model.prototype.newMethod = function() {
return ‘something’;
}
这是一个例子。 Visual Studio代码调试器从" Model.prototype.newMethod"
返回模型上的以下错误“型号'仅指类型,但在此处用作值。
我试图从commonjs和amd导出我的库,但是遇到了同样的问题。
所以我尝试重现Typescript documentation上可用的相同代码。
这次,模型对象上没有显示错误,但是在赋值方法上显示错误:
' Property' newMethod'在“模型”类型中不存在。
我正在使用typescript 2.1.6作为我的库,而2.0.3使用angular。
它开始让我疯狂。什么错误的想法?
非常感谢你的帮助。