gpt4 book ai didi

javascript - 为什么我不能在 typescript 中向 String.prototype 添加新方法

转载 作者:行者123 更新时间:2023-11-30 14:50:12 26 4
gpt4 key购买 nike

我想向 String.prototype 添加一个新方法。我试过了。

interface String {
newMethod(): void
}

String.prototype.newMethod = function() {}

typescriptlang.org playground 中没有错误。但仍然显示错误 Property 'newMethod' does not exist on type 'String' in my local computer.

我不知道为什么。

这是我的tsconfig.json

{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"outDir": "./lib",
"rootDir": "./src",
}
}

我安装`@types/node


我找到了一些例子。

// example1: no error
interface String {
newMethod(): void
}

String.prototype.newMethod = function() {}

// example2: has error
import * as path from 'path'
interface String {
newMethod(): void
}

String.prototype.newMethod = function() {}

只添加了导入语句,发生错误。这么奇怪。不知道为什么?

最佳答案

这就是我为“replaceAll”函数所做的...

export {};

declare global {
// tslint:disable-next-line:interface-name
interface String {
replaceAll(searchFor: string, replaceWith: string): string;
}
}

// I hate how the javascript replace function only replaces the first occurrence...
String.prototype.replaceAll = function(this: string, searchFor: string, replaceWith: string) {
// tslint:disable-next-line:no-invalid-this
var value = this;
var index: number = value.indexOf(searchFor);

while (index > -1) {
value = value.replace(searchFor, replaceWith);
index = value.indexOf(searchFor);
}

return value;
};

关于javascript - 为什么我不能在 typescript 中向 String.prototype 添加新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48266422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com