当前位置: 首页 > 知识库问答 >
问题:

如何测试针对本地js库编译typescript声明文件

怀浩大
2023-03-14

我在HunterLarco/Twitter-V2中添加了类型脚本定义,它具有以下结构:

package.json
src/
  twitter.js
  twitter.d.ts
  Credentials.js
  Credentials.d.ts

我想测试.js文件是否与.d.ts声明文件匹配。

现在我正在使用这个tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "alwaysStrict": true,
    "baseUrl": ".",
    "forceConsistentCasingInFileNames": true,
    "lib": ["es2018"],
    "module": "commonjs",
    "moduleResolution": "node",
    "noFallthroughCasesInSwitch": true,
    "paths": { "twitter-v2": ["src"] },
    "typeRoots": [
      "./node_modules/@types",
      "./src"
    ],
    "outDir": "dist",
    "strict": true,
    "target": "es2018"
  },

  "include": [
    "src/**/*",
    "tests/**/*"
  ]
}

但是,当我故意向twitter.d.ts添加不正确的类型信息并运行tsc--project tsconfig.json时,它不会报告任何错误并写入dist/

共有1个答案

公孙嘉禧
2023-03-14

我需要启用编译器选项来检查js文件(默认情况下typescript不做,即使使用js也是允许的)

https://www.typescriptlang.org/tsconfig#checkjs

{
  "extends": "@tsconfig/node10/tsconfig.json",

  "compilerOptions": {
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "alwaysStrict": true,
    "checkJs": true,
    "forceConsistentCasingInFileNames": true,
    "moduleResolution": "node",
    "noEmit": true,
    "noFallthroughCasesInSwitch": true
  },

  "include": ["src/**/*", "tests/**/*"]
}
 类似资料:
  • 主要内容:CalcThirdPartyJsLib.js 文件代码:,Calc.d.ts 文件代码:,CalcTest.ts 文件代码:,CalcTest.js 文件代码:,实例TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaS

  • 我的项目中有很多JUnit测试。其中一些有一些副作用,可能会影响其他测试的执行。例如,它们打开数据库连接并忘记关闭它们,然后在某个时候测试开始失败,因为它们达到了极限。我想我可以使用一些混音进行测试,我可以这样使用... ...这样当我运行它时,我会得到一个断言错误以及有关执行时间的信息。 我的意思是,检查连接是否关闭很简单,但是在每个测试类或方法中手动将代码放在和方法中似乎是个坏主意。 我认为这

  • 我查看了许多示例代码和文档,无论是隐式构造函数还是显式构造函数,您都可以通过使用类名前面的来声明新类,但随后它们会声明一些值。因此,我认为在某个外部作用域声明它之前,实例是不存在的。

  • 这对我来说毫无意义,因为异步已经存在。 我最初的计划是这样的: 因为所有测试都不是异步的,但这会产生相同的错误: 移除 并将tokio宏用作tokio::ex。Tokio::try_join!解决了眼前的问题,尽管知道为什么会发生这种情况会很好。

  • 问题内容: 我需要所有文件中都需要的一些全局变量。 例如,考虑以下4个文件: 考虑到我将上述所有4个文件都加载到HTML文档中,有没有一种方法可以在其中声明3个全局变量并在其他3个文件中的任何一个中访问它们? 有人可以告诉我是否可行,还是可以解决这个问题? 问题答案: 只需在函数范围之外的global.js中定义变量: 为确保此方法有效,您必须先包含/链接到global.js,然后再尝试访问该文件

  • 问题内容: 我有被定义为接口的som react状态,并且具有特定的所有命名键… 我在下面尝试了一种解决方案,该解决方案应在技术上基于状态键起作用,但仍然会给我错误 做这个的最好方式是什么… 问题答案: 的返回类型是通用的,而不是对象键的并集的数组,因此在此处推断正确的类型可能很棘手。而且,根据我的经验,当发布较新版本的TypeScript或程序包类型定义时,智能解决方案往往会崩溃,因此在这种情况