在JavaScript中,我可以这样做:
something = 'testing';
Run Code Online (Sandbox Code Playgroud)
然后在另一个文件中:
if (something === 'testing')
Run Code Online (Sandbox Code Playgroud)
它将something被定义(只要它们以正确的顺序被调用).
我似乎无法弄清楚如何在TypeScript中做到这一点.
这就是我尝试过的.
在.d.ts文件中:
interface Window { something: string; }
Run Code Online (Sandbox Code Playgroud)
然后在我的main.ts文件中:
window.something = 'testing';
Run Code Online (Sandbox Code Playgroud)
然后在另一个文件中:
if (window.something === 'testing')
Run Code Online (Sandbox Code Playgroud)
这很有效.但我希望能够失去window.它的一部分,让我的something全球化.有没有办法在TypeScript中做到这一点?
(如果有人感兴趣,我真的想为我的应用程序设置日志记录.我希望能够log.Debug从任何文件调用而无需导入和创建对象.)
我读到可以向 TypeScript 中的类型添加扩展方法,但是将其应用于内置类型 Number 时遇到一些麻烦。
这是一些代码:
文件 A:NumberExtensions.ts
// tslint:disable-next-line:class-name interface-name
export interface Number {
isBigNumber(value: number): boolean;
}
// @ts-ignore
Number.prototype.isBigNumber = (value: number) => {
return value > 100000;
};
Run Code Online (Sandbox Code Playgroud)
文件B:使用上述内容
import { Number } from "./NumberExtensions";
foo() {
const aBigNumber: number = 1000000000;
// Errors here TS2339: Property 'isBigNumber' does not exist on type 'number'.
if (aBigNumber.isBigNumber()) {
console.log("It's a big number!");
}
}
Run Code Online (Sandbox Code Playgroud)
我对 TypeScript 扩展方法的声明和使用是否正确?