Javascript 字符串原型在浏览器中工作,但在节点中不工作
节点:8.1.0 我有以下原型:Javascript 字符串原型在浏览器中工作,但在节点中不工作,javascript,node.js,regex,typescript,Javascript,Node.js,Regex,Typescript,节点:8.1.0 我有以下原型: String.prototype.toSlug = function () { return (<string>this) .trim() .toLowerCase() .replace(/\s+/g, '-') .replace(/[^\w\-]+/g, '') .replace(/\-\-+/g, '-') .replace(/^-+/, '') .replace(/-+$/, '')
String.prototype.toSlug = function () {
return (<string>this)
.trim()
.toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
.replace(/-+$/, '')
}
它似乎不能正常工作。它所做的只是删除第一个空格并添加一个破折号,如图所示:
// Original: "Bed Time Stories"
// Outputs: "BedTime-Stories"
// Expected: "bed-time-stories"
如您所见,它甚至没有将字符串转换为小写
但是,当我在测试时,它会创建正确的输出字符串。这是什么原因造成的?接口字符串{
interface String {
toSlug(): string;
}
String.prototype.toSlug = function () {
return (<string>this)
.trim()
.toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
.replace(/-+$/, '')
}
var str = "Bed Time Stories";
console.log(str.toSlug());
toSlug():字符串;
}
String.prototype.toSlug=函数(){
返回(本)
.trim()
.toLowerCase()
.替换(/\s+/g,“-”)
.替换(/[^\w\-]+/g')
.替换(/\-\-+/g,'-'))
.替换(/^-+/,“”)
.替换(/-+$/,'')
}
var str=“睡前故事”;
console.log(str.toSlug());
我发现了错误,接口提供了TypeScript的契约,允许新方法的可见性。JavaScript实现提供了调用该方法时将执行的代码。代码中缺少的内容资料来源:这就是你用
返回(这个)…
的方式键入的吗?是的(复制和粘贴)没有修改这是Typescript,你在节点和Fiddle中使用它吗?是的:这是一个奇怪的输出,我真的不明白为什么Typescript不能编译这么简单的东西,但是似乎toLowerCase
或全局替换都不起作用?我正在使用node8.1.0
,如果这有区别的话。移动typescript元素并不能真正回答问题。我相信我发现了错误,请参阅更新的答案。我在代码中有这个问题,只是没有发布它。但答案是,我的pm2没有加载更改,即使它正在监视更改。关闭pm2
进程并启动一个新进程可以解决此问题。
interface String {
toSlug(): string;
}
String.prototype.toSlug = function () {
return (<string>this)
.trim()
.toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\w\-]+/g, '')
.replace(/\-\-+/g, '-')
.replace(/^-+/, '')
.replace(/-+$/, '')
}
var str = "Bed Time Stories";
console.log(str.toSlug());