【发布时间】:2020-04-21 19:30:01
【问题描述】:
我想要扩展String 原型以添加.trimSlashes() 方法来擦除字符串两端的斜线;我不能让它进行就地替换(而不是要求返回一个字符串,只需在调用时更改自己的字符串),但这将是另一个问题。
我使用的是 TypeScript 3.8.3 版。
所以我有这个 trimSlashes.ts 文件:
import * as fs from "fs";
interface String {
trimSlashes(this: string) : string;
}
String.prototype.trimSlashes = function (this : string) : string {
var str = this;
if (str.startsWith("/")) {
str = str.replace(/^\/+/, "")
}
if (str.endsWith("/")) {
str = str.replace(/\/+$/, "");
}
return str;
}
let test = "//myTest/";
console.log("Original string: " + test);
test.trimSlashes();
console.log("Trimmed slashes: " + test);
console.log("File or directory exists: " + fs.existsSync(test));
我添加了fs 上下文,因为它需要触发编译器停止解析并抱怨Property 'trimSlashes' does not exist on type 'String'. 的错误。如果没有 fs 代码,它会在 NodeJS 上构建和运行。
补充说明
有几个这样的问题,但似乎没有人要求 3.8 版,而且我能找到的所有答案都不适用。
我尝试创建一个单独的 .d.ts 文件,将其包含在源代码中,现在我正在尝试我认为最简单的方法:在一个文件中声明所有内容。如果需要,我不介意有一个 .d.ts 文件,但我就是无法让它工作。
【问题讨论】:
标签: typescript extension-methods