我开始使用TypeScript,现在我在5分钟的指南中关注TypeScript.当我将鼠标悬停在greeter函数名称上时,我在Visual Studio Code中收到一个奇怪的警告,如下图所示.警报是:
[ts]重复的功能实现.
function greeter(person:Person):string(+1 overload)
但是我的单个文件中没有这个独特功能的其他实现!当我运行tsc greeter.ts所有工作正常并生成js文件.
完整greeter.ts档案:
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = { firstName: "Jane", lastName: "User" };
console.log(greeter(user));
Run Code Online (Sandbox Code Playgroud)
我为什么收到此警报?怎么解决?我看了一下这个问题,但我相信它没有关系.
我听说...两者都称为"传播语法 "和"传播运算符 ",后者更受欢迎.相关MDN文档的URL 表明它最初被称为扩展运算符,但后来改为扩展语法,MDN的运算符列表没有提到它.
Google似乎认为术语运营商更受欢迎并被接受,其中包括Microsoft文档和es6-features.org等网站.
哪个术语在ECMAScript的上下文中最正确,如果有的话,为什么?数组解构赋值怎么样?
我正在尝试编译游戏,但得到100多个错误,如:
C:\Users\AppData\Local\Temp\cctQCagR.o: In function `load_image(std::string)':
main.cpp:(.text+0x4bd4): undefined reference to `std::string::c_str() const'
C:\Users\Bill\AppData\Local\Temp\cctQCagR.o: In function `createShip(float, float)':
main.cpp:(.text+0x4da4): undefined reference to `std::allocator<char>::allocator()'
main.cpp:(.text+0x4dbc): undefined reference to `std::basic_string<char, std::char_tra
its<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> cons
t&)'
main.cpp:(.text+0x4de4): undefined reference to `std::basic_string<char, std::char_tra
its<char>, std::allocator<char> >::~basic_string()'
main.cpp:(.text+0x4e04): undefined reference to `std::basic_string<char, std::char_tra
its<char>, std::allocator<char> >::~basic_string()'
main.cpp:(.text+0x4e1c): undefined reference to `std::allocator<char>::~allocator()'
main.cpp:(.text+0x4e28): undefined reference to `std::allocator<char>::allocator()'
main.cpp:(.text+0x4e40): undefined reference to `std::basic_string<char, std::char_tra
its<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> cons
t&)'
main.cpp:(.text+0x4e60): undefined reference to `std::allocator<char>::~allocator()' …Run Code Online (Sandbox Code Playgroud) 当我尝试在条件(三元)运算符中使用逗号运算符进行日志记录时,我注意到了一些奇怪的事情.这是一个人为的例子:
const a = 2;
const b = 1;
a > b ? console.log(a), a : b; //I expect this to log and evaluate to aRun Code Online (Sandbox Code Playgroud)
但相反,我遇到了这个:
Uncaught SyntaxError: Unexpected token ,
Run Code Online (Sandbox Code Playgroud)
根据MDN文档,条件运算符接受两个表达式作为三元运算符的"if"和"else"情况,而逗号运算符理论上是表达式,
逗号运算符计算其每个操作数(从左到右)并返回最后一个操作数的值.
那我为什么会出现语法错误?逗号运算符是一个表达式,应该允许它在条件运算符中.虽然,在逗号的操作数周围加括号可以正常工作:
a > b ? (console.log(a), a) : b; //Logs and gives a
Run Code Online (Sandbox Code Playgroud)
为什么这样可行?圆括号(或分组运算符)允许解释者知道它在处理一个表达式,但console.log(a), a是已经无需括号的表达,所以为什么我得到一个语法错误,没有他们?
javascript ternary-operator syntax-error language-lawyer ecmascript-6
我试图理解CSS transition-delay属性的负值.请先查看代码示例.有两个divs具有不同的转换延迟.
我认为给延迟的负值与给right div(0.2s)给出一个正值是一样的,但它的行为不一样.我认为它不会0.2s使转换变得过分.
transition-delay价值做什么?transition-delay有效的负值,还是应该不使用?function toggle() {
var left = document.querySelector('.left');
var right = document.querySelector('.right');
left.classList.toggle('hidden');
right.classList.toggle('hidden');
left.classList.toggle('show');
right.classList.toggle('show');
}
window.setInterval(toggle, 1500);
window.setTimeout(toggle, 100);Run Code Online (Sandbox Code Playgroud)
#container {
background: yellow;
display: flex;
width: 200px;
height: 200px;
overflow: hidden;
}
.left,
.right {
flex: 1;
}
.left {
background: red;
transition: transform 1s -0.2s cubic-bezier(0.19, 1, 0.22, 1);
}
.right {
background: blue;
transition: transform 1s cubic-bezier(0.19, 1, …Run Code Online (Sandbox Code Playgroud)请考虑以下代码:
object SomeObjectA {
object SomeObjectB {
val a = "test"
}
}
val X = SomeObjectA
typealias Y = SomeObjectA
SomeObjectA.SomeObjectB // works
X.SomeObjectB // error
Y.SomeObjectB // error
Run Code Online (Sandbox Code Playgroud)
我不能引用使用val或typealias引用外部对象的嵌套对象(在外部对象中).为什么?
在此代码段中,语句f instanceof PipeWritable返回true(Node v8.4.0):
const stream = require('stream');
const fs = require('fs');
class PipeWritable extends stream.Writable {
constructor () {
super();
}
}
const s = new PipeWritable();
const f = fs.createWriteStream('/tmp/test');
console.log(f instanceof PipeWritable); // true ... ???
Run Code Online (Sandbox Code Playgroud)
对象s:
Object.getPrototypeOf(s) 是 PipeWritable {} s.constructor 是 [Function: PipeWritable]PipeWritable.prototype 是 PipeWritable {}对象f:
Object.getPrototypeOf(f) 是 WriteStream { ... } f.constructor 是 [Function: WriteStream] ... stream.WriteStream.prototype 是 Writable { ... }原型链:
Object f …Run Code Online (Sandbox Code Playgroud) 给定一个对象文字或jQuery(html, attributes)对象,是否有任何规范说明保留字或未来的保留字必须引用?
或者,例如,class可以设置为对象的属性名称,而不使用引号括起属性名称,而不违反有关标识符,属性名称或保留字的使用的规范?
寻求关于这个问题的确凿答案以避免混淆.
let objLit = {
class: 123,
var: "abc",
let: 456,
const: "def",
import: 789
}
console.dir(objLit);
jQuery("<div>012</div>", {
class: "ghi"
})
.appendTo("body");Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>Run Code Online (Sandbox Code Playgroud)
有关:
对这个答案的评论
规格
标识符名称是根据所述中给出的语法解释令牌Unicode标准的第5章的"标识符"部分,与一些小的修改.
标识符是不是ReservedWord的IdentifierName
我正在尝试做这个ReactJS教程的第15步:React.js简介适用于知道jQuery足够的人
作者建议如下:
overflowAlert: function() {
if (this.remainingCharacters() < 0) {
return (
<div className="alert alert-warning">
<strong>Oops! Too Long:</strong>
</div>
);
} else {
return "";
}
},
render() {
...
{ this.overflowAlert() }
...
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下操作(看起来对我来说不错):
// initialized "warnText" inside "getInitialState"
overflowAlert: function() {
if (this.remainingCharacters() < 0) {
this.setState({ warnText: "Oops! Too Long:" });
} else {
this.setState({ warnText: "" });
}
},
render() {
...
{ this.overflowAlert() }
<div>{this.state.warnText}</div>
...
}
Run Code Online (Sandbox Code Playgroud)
我在Chrome开发工具的控制台中收到以下错误:
在现有状态转换期间无法更新(例如在内部
render或另一个组件的构造函数中).渲染方法应该是道具和状态的纯函数; 构造函数的副作用是反模式,但可以移动到componentWillMount …
我遵循将多属性标签分解为多行的常见模式,例如.
<div
className="foo"
style={{ fontWeight: "bold" }}
/>
Run Code Online (Sandbox Code Playgroud)
我想在声明中添加一条评论,例如.
<div
className="foo"
{/* This is only temporary */}
style={{ fontWeight: "bold" }}
/>
Run Code Online (Sandbox Code Playgroud)
但是上面的语法不起作用; 我明白了:
SyntaxError: Unexpected token, expected ... (45:96)
Run Code Online (Sandbox Code Playgroud)
(指着收盘}于temporary */})是否可以添加注释标签内的JSX,如果是这样,我应该使用什么语法?
javascript ×7
ecmascript-6 ×3
reactjs ×2
c++ ×1
css ×1
css3 ×1
ecmascript-5 ×1
gcc ×1
html ×1
kotlin ×1
node.js ×1
react-jsx ×1
reference ×1
syntax-error ×1
typescript ×1