我发现了一个令人费解的错误,假设我想要一个相当无用的函数,它合并一个对象的两个互补部分:
function foo<T extends object, K extends keyof T>(a: Pick<T, K>, b: Omit<T, K>): T {
return { ...a, ...b } // TS2322: Type 'Pick<T, K> & Omit<T, K>' is not assignable to type 'T'. 'Pick<T, K> & Omit<T, K>' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'object'.
}
Run Code Online (Sandbox Code Playgroud)
我收到上面的错误,而下面的代码显然有效:
interface Test {
a: string,
b: string
}
const a: Pick<Test, 'a'> = { a: 'a' }
const …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下堆栈(仅相关的堆栈)为.NET应用程序组合CI环境:
我已经使用docker-compose为sonarqube和postgre创建容器,两者都在运行和工作.我很遗憾地执行了由gitlab运行程序执行的构建的sonarqube分析以及我发现使用Maven的所有示例.我也试过使用声纳扫描仪,到目前为止没有运气.
以下是我的gitlab-ci.yml的内容:
image: mono:latest
cache:
paths:
- ./src/T_GitLabCi/packages/
stages:
- build
.shared: &restriction
only:
- master
tags:
- docker
build:
<<: *restriction
stage: build
script:
- nuget restore ./src/T_GitLabCi
- MONO_IOMAP=case xbuild /t:Build /p:Configuration="Release" /p:Platform="Any CPU" ./src/T_GitLabCi/T_GitLabCi.sln
- mono ./tools/NUnitConsoleRunner/nunit3-console.exe ./src/T_GitLabCi/T_GitLabCi.sln --work=./src/T_GitLabCi/test --config=Release
- << EXECUTE SONAR ANALYSIS >>
Run Code Online (Sandbox Code Playgroud)
我在这里肯定遗漏了一些东西.有人能指出正确的方向吗?
我有一个关于 Promise 在 Node.js 中如何工作的基本问题(在浏览器中,行为符合预期),请考虑以下函数作为示例:
async function proc(): Promise<void> {
const resolve = new Promise((resolve) => setTimeout(resolve, 0))
const reject = Promise.reject('reject')
console.log(await resolve)
try {
await reject
} catch (err) {
console.error(err)
}
}
Run Code Online (Sandbox Code Playgroud)
由于拒绝更快地出列,因此它被抛出await resolve,并且由于它没有在那里处理,所以我们得到了未处理的拒绝。
尽管有很多解决方案可以解决这个问题,但我发现这种行为违反直觉。是否有任何原因导致传递给的对象reject()在相应的 Promise 被执行时没有被抛出await,类似于传递给的对象resolve()在 时如何返回await?
我期望await做这样的工作:
await(promise) {
let result, error;
promise
.then((data) => result = data)
.catch((err) => error = err)
// wait for promise magic
if (error != null) { …Run Code Online (Sandbox Code Playgroud) 可能与此问题类似,但由于先前版本已经回答了该问题,因此我会为其打开一个新问题。
尽管我有意将代码气味放入我的源代码中,但 sonarqube 并未发现任何问题。生成分析报告 ( 101 KB ),压缩并成功上传。从扫描仪端执行是成功的。
INFO: Scanner configuration file: /opt/sonar-scanner-2.6.1/conf/sonar-scanner.properties
INFO: Project root configuration file: /builds/kataik/gitlab_test/sonar-project.properties
INFO: SonarQube Scanner 2.6.1
INFO: Java 1.8.0_92 Oracle Corporation (64-bit)
INFO: Linux 4.4.0-38-generic amd64
INFO: User cache: /opt/sonar-scanner-2.6.1/.sonar/cache
INFO: …Run Code Online (Sandbox Code Playgroud) 我有一个 Web 应用程序部署为docker 容器。我还设置了一个nginx容器(使用dnsmasq解析器)作为 Web 应用程序前面的反向代理,它的 80 端口映射到主机。我的应用程序使用 SSO 身份验证。
当我使用身份提供商登录时,回调 url 似乎是我的 Web 应用程序的内部域名,而不是主机上的正确 url。
我的 Nginx 配置:
server {
resolver 127.0.0.1 valid=1s ipv6=off;
set $upstream_endpoint http://myapp:5000;
listen 80;
location / {
proxy_pass $upstream_endpoint;
}
}
Run Code Online (Sandbox Code Playgroud)
sso 尝试重定向到的回调 URL 是http://myapp:5000而不是http://myhost.com:80,这显然会失败,因为它是内部的。
有人可以帮我找到如何正确设置 nginx 吗?
我是ko的新手,但找不到我的问题的解决方案.我尝试将可绑定属性组织到视图模型层次结构中.根据文档,在我看来,以下应该有效,但事实并非如此.你有什么提示吗?
function AppViewModel() {
this.nested = new NestedViewModel();
}
function NestedViewModel() {
this.firstName = ko.observable();
this.lastName = "Bertington";
}
ko.applyBindings(new AppViewModel());
Run Code Online (Sandbox Code Playgroud)
并在这里使用:
<p data-bind="with: nested">
<p>First name: <input type="text" data-bind="value: firstName, valueUpdate: afterkeydown"></input></p>
<p>Last name: <strong data-bind="text: firstName"></strong></p>
</p>
Run Code Online (Sandbox Code Playgroud) docker ×2
javascript ×2
sonarqube ×2
typescript ×2
.net ×1
async-await ×1
gitlab-ci ×1
knockout.js ×1
mono ×1
nginx ×1
node.js ×1
promise ×1