我正在构建一个具有以下结构的Angular
库:
my-library-project
|_ dist
|_ e2e
|_ projects
|_ my-library
|_ extensions
|_ number
|_ src
|_ lib
|_ extension.ts
|_ index.ts
|_ ng-package.json
|_ package.json
|_ public-api.ts
|_ src
|_ test.ts
|_ index.ts
|_ karma.conf.js
|_ ng-package.json
|_ package.json
|_ public-api.ts
|_ tsconfig.lib.json
|_ tsconfig.spec.json
|_ tslint.json
|_ src
extension.ts
里面有一个以下代码:
export { };
declare global {
interface Number {
isOdd(): boolean;
}
}
Number.prototype.isOdd = function(): boolean {
return (this % 2) !== 0;
};
我执行$ ng build my-library
,在组件中导入my-library/extensions/number
,并在构造函数体内编写console.log((2).isOdd())
。我执行$ ng s
,直到这里一切都没问题,但是如果我使用--prod
选项执行,则不存在Number.prototype.isOdd()
,因此浏览器会抛出错误,正如我们在其检查中看到的那样。
不需要将其声明为接口。你可以使用一个简单的类,并在那里添加你的方法是Odd。
不同之处在于接口不存在或导出在构建版本中,而类是,这实际上也最大限度地减少了文件大小。
编辑
定义如下所示的类。这是奇数方法将可用。接口不会被导出,更多的是用于定义类型,而在类中,您可以定义行为。在此处阅读有关打字稿中的接口和类的更多信息 https://basarat.gitbooks.io/typescript/docs/types/interfaces.html .
export class MyClass {
public isOdd(): boolean {
// your code
}
}
希望这有帮助。