小编gom*_*sha的帖子

如何在TypeScript中声明函数的返回类型

我在这里查了https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md这是TypeScript语言规范,但我看不出有什么可以声明函数的返回类型.我在下面的代码中展示了我的期望:greet(name:string) :string {}

class Greeter {
    greeting: string;
    constructor (message: string) {
        this.greeting = message;
    }
    greet() : string{
        return "Hello, " + this.greeting;
    }
}  
Run Code Online (Sandbox Code Playgroud)

我看到我们可以使用一些东西,(name:string) => any但它们主要用于传递回调函数:

function vote(candidate: string, callback: (result: string) => any) {
// ...
}
Run Code Online (Sandbox Code Playgroud)

typescript

97
推荐指数
6
解决办法
12万
查看次数

如何从主机访问Docker容器的内部IP地址?

我有 2 个 docker 容器在我的 Mac 主机上运行 - 容器 1 是来自 Docker Hub 的 Jenkins,而容器 2 是来自 Docker Hub 的 SonarQube。我有两个容器成功运行。我可以通过访问从我的主机访问 Jenkins http://localhost:8080/,我可以通过访问访问我的 SonarQube http://localhost:9000/

Jenkins 容器是这样启动的:

docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:latest
Run Code Online (Sandbox Code Playgroud)

SonarQube 容器是这样启动的:

docker run -d -p 9000:9000 sonarqube
Run Code Online (Sandbox Code Playgroud)

现在我想让每个容器相互通信,所以我需要向每个容器提供另一个容器的 IP 地址。

我通过执行以下命令获得了每个容器IP 地址

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
Run Code Online (Sandbox Code Playgroud)

这将返回172.17.0.2Jenkins 容器和172.17.0.3SonarQube 容器的 IP 地址。但是当我尝试从我的主机访问 Jenkins 容器时,http://172.17.0.2:8080我收到请求超时。当我尝试从我的主机访问 SonarQube 容器时,会发生同样的事情 …

jenkins docker sonarqube

6
推荐指数
1
解决办法
8528
查看次数

TypeScript ts-jest预处理器的目的是什么?

我是TypeScript(和JavaScript)的新手,所以这可能很明显,但是我不了解拥有诸如ts-jest之类的预处理模块来针对TypeScript代码运行Jest测试的意义。我正在Node上开发一个TypeScript项目,并且正在使用Jest测试所有内容,到目前为止效果很好。

我将我的TypeScript代码(和测试)转换为JavaScript(ES5),然后使用Jest将Jest与该ES5 JavaScript进行对比-一切都很好,不需要ts-jest。

那么使用ts-jest有什么意义呢?换句话说-在什么情况下我会使用它?

我已经看到类似这里的建议,使用ts-jest来“预处理打字稿文件”,但我不明白。我认为TypeScript的全部意义在于它可以为您处理所有这些事情,那么为什么还要使用ts-jest单独进行处理呢?另外,没有它我也很好。

也许我没有得到:

  1. 转堆和预处理之间的区别
  2. Jest的transform属性的含义

这是我的tsconfig.json:

{
    "compilerOptions": {
        "strictNullChecks": true,
        "noImplicitAny": true,
        "moduleResolution": "node",
        "target": "es5",
        "lib": [
            "es6"
        ]
    },
    "include": [
        "src/**/*",
        "test/**/*",
    ],
}
Run Code Online (Sandbox Code Playgroud)

这是我的package.json的一个片段:

{
  "scripts": {
    "test": "jest",
    "dev": "nodemon ./src/app",
    "start": "node ./src/app"
  },

  "devDependencies": {
    "@types/express": "^4.16.0",
    "@types/jest": "^23.1.1",
    "jest": "^23.1.0",
    "nodemon": "^1.17.5"
  },

  "jest": {
    "transform": {},
    "testRegex": "/test/.*\\.(ts|tsx|js)$"
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing typescript jestjs

5
推荐指数
1
解决办法
1055
查看次数

Docker 容器在“docker start”后不断停止

我对 Docker 还很陌生。我有一个Dockerfile从以前的开发人员那里继承来的很长的东西,它有很多错误,我正在尝试将其恢复到工作点。我注释掉了文件的大部分内容,除了第一行:

FROM ubuntu:14.04
Run Code Online (Sandbox Code Playgroud)

我做了以下事情:

  1. docker build -t pm .构建图像 - 这是有效的,因为我在执行时可以看到图像docker images
  2. docker run <image-id>返回没有错误或任何消息。现在我期望从图像创建容器并启动。但是当我执行 a 时,docker ps -a它显示容器已退出:
CONTAINER ID        IMAGE               COMMAND             CREATED    STATUS                          PORTS               NAMES 
Run Code Online (Sandbox Code Playgroud)

b05f9727f516 f216cfb59484 "/bin/bash" 大约一分钟前 退出 (0) 大约一分钟前
lucid_shirley

不知道为什么我无法获得正在运行的容器以及为什么它在docker run命令之后一直停止。

  1. 执行docker logs <container_id>不显示任何内容 - 它只是返回而没有任何输出。

docker dockerfile docker-compose

4
推荐指数
2
解决办法
2万
查看次数

在 VS Code 中启用 TSLint

我有一种情况,tslint 正在处理一些 VS Code 项目,而没有处理其他项目。它工作的项目来自带有 TypeScript 修改的create-react-app。但是当我创建一个新的 TypeScript(非 React)项目并且只是从 React 应用程序复制 tslint.json 时,tslint 不起作用(没有错误/警告 - 没有)。

这是tslint.json我用于两个应用程序的:

{
  "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts"
    ]
  },
  "rules": {
    "ordered-imports": false
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我使用有效的 tslint 创建一个新的 TypeScript React 项目的方式:

create-react-app <app-name> --scripts-version=react-scripts-ts
Run Code Online (Sandbox Code Playgroud)

我还检查了我的 VS Code 设置,并为两个项目设置了以下内容:

"tslint.enable": true,
Run Code Online (Sandbox Code Playgroud)

tsconfig.json 对于“tslint working”项目(由 create-react-app 生成):

{
  "compilerOptions": {
    "baseUrl": ".",
    "outDir": "build/dist",
    "module": "esnext",
    "target": "es5",
    "lib": ["es6", "dom"],
    "sourceMap": true,
    "allowJs": true,
    "jsx": "react", …
Run Code Online (Sandbox Code Playgroud)

typescript tslint

3
推荐指数
2
解决办法
1万
查看次数

在创建其他服务之前等待 docker compose 中的 mysql 服务准备就绪

我试图用等待换它在我docker-compose.yaml等待的MySQL是创建依赖于它的服务前准备好。这是我的docker-compose.yaml

version: '3.5'

services:
  mysql:
    image: mysql:5.6
    ports:
      - "3307:3306"
    networks:
      - integration-tests
    environment:
      - MYSQL_DATABASE=mydb
      - MYSQL_USER=root
      - MYSQL_ROOT_PASSWORD=mypassword
    entrypoint: ./wait-for-it.sh mysql:3306
networks:
  integration-tests:
    name: integration-tests
Run Code Online (Sandbox Code Playgroud)

尝试使用 docker-compose 运行此错误时出现此错误:

启动集成测试_mysql_1 ...错误

错误:对于集成测试_mysql_1 无法启动服务 mysql:OCI 运行时创建失败:container_linux.go:348:启动容器进程导致“exec:\”./wait-for-it.sh\”:stat ./wait-for- it.sh:没有这样的文件或目录”:未知

错误:对于 mysql 无法启动服务 mysql:OCI 运行时创建失败:container_linux.go:348:启动容器进程导致“exec:\”./wait-for-it.sh\”:stat ./wait-for-it。 sh:没有这样的文件或目录”:未知错误:启动项目时遇到错误。

wait-for-it.sh脚本与我的docker-compose.yaml文件处于同一级别,所以我不明白为什么找不到它。

docker docker-compose

0
推荐指数
1
解决办法
5547
查看次数