Snæ*_*ørn 3 javascript typescript
我有以下TypeScript类
module Test {
"use strict";
class Foo {
public static name = "foo";
}
}
Run Code Online (Sandbox Code Playgroud)
很简单.
但是在Chrome中运行时出现以下错误:
未捕获的TypeError:无法分配给函数'function Foo(){}'的只读属性'name'
这是生成的javascript:
var Test;
(function (Test) {
"use strict";
var Foo = (function () {
function Foo() {
}
Foo.name = "foo";
return Foo;
}());
})(Test || (Test = {}));Run Code Online (Sandbox Code Playgroud)
如果我使用不同的名称,那么name我不会收到错误.
module Test {
"use strict";
class Foo {
public static huh = "foo";
}
}
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?
问题似乎是你正在尝试写信Function.name.在最初编写的代码中,您可以在编译的代码中看到您正在更改的代码Foo.name.
考虑一下这段代码
function Foo(){}
console.log(Foo.name); // prints 'Foo'
Run Code Online (Sandbox Code Playgroud)
该错误是因为您尝试更改此函数的属性,并且不允许这样做(read-only property ..).有关您不被允许这样做的原因(以及如何)的更多信息可以在这里找到.感谢@ssube在评论中提供此链接
因此,虽然您没有自己创建该属性,但您的所有功能实际上都拥有它.您可以查看此页面以获取更多信息.
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |