我正在使用TypeScript和Express/ Node.js.
对于使用模块,TypeScript手册显示以下语法:
import express = require('express');
但typescript.d.ts文件也显示:
import * as express from "express";
我还搜索了MSDN博客,但找不到任何东西.
从2016年初开始哪一个更正确?如果有的话,两者之间有什么区别?
哪个是查找有关最新语法的信息的最佳来源,以便将来可以找到这些信息?
我目前在一个基于Java的大学课程中,对于编码样本,教授正在使用protected字段来进行子类访问.
我问这是不好的做法,并被告知这是正常的.这是真的,为什么不使用setter和getter来抽象方法呢?我认为除非另有要求,否则最好限制尽可能多的信息.
我使用setter和getter测试了abstract父级,它适用于abstract子类的父类.虽然抽象类不能instantiated,他们仍然可以被用来创建对象时,subclass是instantiated因为据我所知.
这是一个简短的例子:
public abstract class Animal {
protected int height;
}
public class Dog extends Animal {
public Dog() {
height = 6;
}
}
public class Cat extends Animal {
public Cat() {
height = 2;
}
}
Run Code Online (Sandbox Code Playgroud)
与使用相反:
public abstract class Animal {
private int height;
public getHeight() {
return height;
}
public setHeight(int height) {
this.height = height;
}
}
public class Dog …Run Code Online (Sandbox Code Playgroud) 在Chrome版本中,^72如果我运行以下内容JavaScript,则没有错误.
{ prop: p } = { prop: 'prop' }
>> { prop: 'prop' }
Run Code Online (Sandbox Code Playgroud)
因此意外地将代码行解释为表达式语句.
但是,如果我在结尾处使用分号运行相同的代码,它将按预期运行.
{ prop: p } = { prop: 'prop' };
>> Uncaught SyntaxError: Unexpected token =
Run Code Online (Sandbox Code Playgroud)
这是预期的,因为初始{告诉JavaScript引擎它是一个代码块,除非我们用括号消除歧义.
为什么这会出现在分号上但不是没有呢?
javascript syntax google-chrome destructuring object-destructuring
在iOS键盘上,顶行有时会有自动完成建议。
keydown当用户单击这些自动完成建议之一时,不会触发该事件。
当用户单击自动完成建议之一时是否可以侦听事件?
我需要能够增加和减少MongoDB对象中数组元素的位置。
我<update>在MongoDB API中查看了该API,但找不到任何让我这么做的东西。
我正在尝试使用findOneAndUpdate贯通Mongoose,我知道我试图向上或向下移动的元素的索引。
base64编码图像数组项的示例:
{
images: [
"img1",
"img2",
"img3"
]
}
Run Code Online (Sandbox Code Playgroud)
我想向上或向下移动“ img2”(但由于无处可去,因此“图像”应该不能向上推)。
如果我想向上推“ img2”,那么结果将是:
{
images: [
"img2",
"img1",
"img3"
]
}
Run Code Online (Sandbox Code Playgroud)
通过更改索引,交换或上推/下推来实现此目标都没有关系。
我为 GitLab 存储库进行了 CI 设置,并且该作业包含以下到 STDOUT 的输出。
=============================== Coverage summary ===============================
Statements : 94.25% ( 291/333 )
Branches : 62.29% ( 53/75 )
Functions : 73.32% ( 170/196 )
Lines : 94.68% ( 533/569 )
================================================================================
Run Code Online (Sandbox Code Playgroud)
在.gitlab-ci.yml该工作的文件中,我有coverage: /^Statements\s*:\s*([^%]+)/. 同样,在我设置的存储库的 CI/CD 设置中^Statements\s*:\s*([^%]+)。
然而,代码覆盖率似乎出现Unknown在代码覆盖率徽章上。
我正在从react版本升级15到16(16.6.1),并且我在控制台中看到了很多这样的警告,我应该担心吗?
Warning: Expected instance props to match memoized props before componentDidUpdate. This is likely due to a bug in React. Please file an issue.
我无法真正提出问题,因为我无法查明它,而且这不是我要共享的代码。我在网上找不到任何关于这个问题的信息。
我应该担心吗?我应该让它溜走吗?
如果我有以下基本功能typescript可以自动推断返回类型。
function myFunction(x: number, y: number) {
return x * y;
}
Run Code Online (Sandbox Code Playgroud)
如果typescript由于某些其他调用正在泄漏any而无法推断返回类型,因此它无法进行正确的推断,那么声明返回类型是否仅有用?
function myFunction(x: number, y: number) {
return x * y || callThatReturnsAny();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果我知道callThatReturnsAny()返回一个,我想输入它number
function myFunction(x: number, y: number): number {
return x * y || callThatReturnsAny();
}
Run Code Online (Sandbox Code Playgroud)
虽然最好的解决方案只是输入callThatReturnsAny()以便typescript进行推断?但是在那种情况下,您何时真正应该使用显式返回类型?
从我的Apache错误日志.
[Tue Jan 26 00:37:50.840680 2016] [:error] [pid 6522] [client 70.70.241.146:57247] mod_wsgi (pid=6522): Target WSGI script '/var/www/site/public_html/project/apache/wsgi.py' cannot be loaded as Python module.
[Tue Jan 26 00:37:50.840791 2016] [:error] [pid 6522] [client 70.70.241.146:57247] mod_wsgi (pid=6522): Exception occurred processing WSGI script '/var/www/site/public_html/project/apache/wsgi.py'.
[Tue Jan 26 00:37:50.840852 2016] [:error] [pid 6522] [client 70.70.241.146:57247] Traceback (most recent call last):
[Tue Jan 26 00:37:50.841081 2016] [:error] [pid 6522] [client 70.70.241.146:57247] File "/var/www/site/public_html/project/apache/wsgi.py", line 23, in <module>
[Tue Jan 26 00:37:50.841094 2016] [:error] [pid 6522] …Run Code Online (Sandbox Code Playgroud) 是否可以使用enum正在转译的文件中的an ?babel@babel/preset-typescript
mymodule.d.ts
declare module 'mymodule' {
export enum Fruit {
apple = 'Apple',
}
}
Run Code Online (Sandbox Code Playgroud)
script.js
import { Fruit } from 'mymodule'
assert.equals(Fruit.apple === 'Apple')
Run Code Online (Sandbox Code Playgroud)
Fruit在这种情况下将是未定义的,因为babel不知道环境声明。
除了声明一个单独的枚举/常量文件并直接在两个地方(环境模块和脚本)导入这些文件之外,还有其他方法可以解决这个问题吗?
我的理解是在每个宏任务之后处理完整的微任务任务队列。
如果是这种情况,为什么在以下代码片段中setTimeout的Promise微任务之后执行回调JavaScript?
console.log('start');
setTimeout(() => {
console.log("setTimeout");
});
Promise.resolve().then(function() {
console.log('promise');
});
console.log('end');
Run Code Online (Sandbox Code Playgroud)
这将输出以下内容:
> "start"
> "end"
> "promise"
> "setTimeout"
Run Code Online (Sandbox Code Playgroud)
是因为4ms现代浏览器强加了 ~延迟吗?
来自MDN:
在现代浏览器中,当由于回调嵌套(其中嵌套级别至少为一定深度)或在一定数量的连续间隔后触发连续调用时,
setTimeout()/setInterval()调用被限制为至少每 4 毫秒一次。
尽管这表明它仅适用于连续回调嵌套。
假设页面上有一段文本(无论它的样式是否为“传统”链接或按钮),单击该文本后会转到带有新页面/URL 的新页面。但是导航以编程方式发生(例如,通过react-router使用历史 Web API)而不是硬 HTTP 刷新。
在这种情况下,它应该是一个传统的锚链接,带有href诸如#或 按钮之类的属性?
选项 1:
<a href="#" onClick={navigateToNextPage}>Link</a>
Run Code Online (Sandbox Code Playgroud)
缺点是你有一个垃圾href属性。您可以删除它,但它不在 Tab 键顺序中,并且不会获得默认链接样式(尽管可以通过一次性样式克服这些问题)。此外,如果您复制链接,它将复制为#不正确的内容,并会被屏幕阅读器错误地解释。
选项2:
<button onClick={navigateToNextPage}>Link</a>
Run Code Online (Sandbox Code Playgroud)
这里的缺点是,如果您希望它看起来像传统链接,则需要应用自定义样式。此外,在我看来,它在某些方面确实像一个传统的链接。但这对屏幕阅读器来说会更好。
有没有办法告诉rails 将在生产中为特定错误代码(例如ActionController::ParameterMissing)呈现哪个错误代码?
javascript ×9
typescript ×3
express ×2
frontend ×2
node.js ×2
reactjs ×2
web-frontend ×2
babeljs ×1
browser ×1
django ×1
enums ×1
event-loop ×1
gitlab ×1
html ×1
ios ×1
istanbul ×1
java ×1
mongodb ×1
mongoose ×1
nyc ×1
python ×1
react-router ×1
regex ×1
ruby ×1
syntax ×1
task-queue ×1
timer ×1
typing ×1
virtualenv ×1