小编Gil*_*bre的帖子

如何使用 NodeJS 13 和 Typescript 3.8 导入 esm 模块?

我在 NodeJS 中的某些导入方面遇到问题。我想使用 Typescript 3.8 的新功能,例如私有字段:#myPrivateField

我不知道如何在我的班级中正确导入模块“typescript”。我尝试了很多选择,但无法解决我的问题。

我的文件 :

包.json

{
  "name": "test",
  "scripts": {
    "start": "tsc && node --experimental-modules --es-module-specifier-resolution=node main.js"
  },
  "dependencies": {
    "@types/node": "^13.13.2",
    "app-root-path": "^3.0.0",
    "fs-extra": "^9.0.0",
    "tsutils": "^3.17.1"
  },
  "devDependencies": {
    "ts-node": "~8.3.0",
    "typescript": "^3.8.3"
  },
  "type": "module"
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.json

{
  "compilerOptions": {
    "lib": [
      "ESNext",
      "es2016",
      "dom",
      "es5"
    ],
    "module": "esnext",
    "moduleResolution": "Node",
    "sourceMap": true,
    "target": "es6",
    "typeRoots": [
      "node_modules/@types"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

主要.ts

// import ts = require("typescript");
import * as ts from …
Run Code Online (Sandbox Code Playgroud)

import module node.js typescript

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

如何排除模板文字类型的子字符串?

我想从模板文字类型(自 TypeScript 4.1 起可用)中排除一些子字符串,但我不知道是否可能。

例子:

我可以定义一个类型,说“这个字符串是一个包含 2 个或更多元素的元组”,即类似于'[string, number]'这个文字类型:

type TupleWithTwoOrMoreElements = `[${string}, ${string}]`;
Run Code Online (Sandbox Code Playgroud)

现在,我想做相反的事情,即通过排除 substring创建一个文字类型,表示“这是一个类似元组的元素少于 2 个”, 。我想做这样的事情:

type TupleWithLessThanTwoElements = `[${someStringWithoutCommaOrSpace}]`;
Run Code Online (Sandbox Code Playgroud)

我认为不可能编写这种“regex-literal-type”,但我想知道是否有人能够解决这个问题。

typescript template-literals

4
推荐指数
1
解决办法
2133
查看次数

如何检查某些内容是否可以是 TypeScript 中的字符串?

我想创建一个 TypeScript 类型来检查元素是否可以是字符串。

这意味着该元素可以具有“string”或“any”类型,但不能具有“number”、“boolean”、“number[]”、“Person”等类型。

我尝试使用条件类型,但我找不到如何排除“所有不可能是字符串的内容”。

我也尝试了 Exclude<any, string> 类型,但这并不完全是我想要的。

编辑

我更好地解释了我的问题:我创建了一个静态方法,如果数据是 a ,foo(data)它将执行某些操作并返回 a ,或者如果数据不是 a ,则执行其他操作并返回 a 。stringstringnumberstring

为此,很简单,我可以像这样进行重载:

class FooClass {

    static foo(data: string): string
    static foo(data: any): number
    static foo(data: any): string | number {
        if (typeof data === 'string') {
            return 'a';
        } else {
            return 2;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,假设如果不是 a ,该foo()方法将抛出错误。我有两个案例:datastring

  • 如果该方法的用户不知道数据的类型(可能是 a string),我希望他可以使用此方法,如果不是 a ,我将返回一个错误string

  • 如果用户知道数据的类型(number例如 a ),我想告诉他这是不可能的,它不可能是 …

types conditional-statements typescript

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