首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当设置了`noImpltAny`时,Typescript忽略`typeRoots`

基础概念

noImplicitAny: 这是一个TypeScript编译器选项,用于强制编译器检查所有未明确声明类型的变量、函数参数和返回值。如果设置为true,编译器会在遇到未明确声明类型的代码时抛出错误。

typeRoots: 这也是一个TypeScript编译器选项,用于指定自定义类型定义文件的根目录。通过设置typeRoots,你可以告诉TypeScript编译器在哪里查找额外的类型定义文件(如.d.ts文件)。

相关优势

  • noImplicitAny: 强制开发者明确声明类型,有助于提高代码的可读性和可维护性,同时减少运行时错误。
  • typeRoots: 允许开发者自定义类型定义文件的查找路径,增加了灵活性,特别是在使用第三方库或模块时。

类型与应用场景

  • noImplicitAny: 适用于所有TypeScript项目,特别是对类型安全要求较高的项目。
  • typeRoots: 适用于需要自定义类型定义文件路径的项目,例如在使用npm包管理器时,可能需要指定自定义的类型定义文件路径。

遇到的问题及原因

当设置了noImplicitAnytrue时,TypeScript编译器会严格检查所有未明确声明类型的代码。如果同时设置了typeRoots,但某些类型定义文件未能正确加载或被忽略,可能会导致编译错误。

解决方法

  1. 确保类型定义文件存在且路径正确: 检查typeRoots指定的路径下是否存在相应的.d.ts文件,并确保路径设置正确。
  2. 使用paths选项: 如果需要更复杂的路径映射,可以使用paths选项来指定类型定义文件的路径。
  3. 检查tsconfig.json配置: 确保tsconfig.json文件中的配置正确无误,特别是typeRootsnoImplicitAny选项。
  4. 手动导入类型定义: 如果某些类型定义文件未能自动加载,可以尝试手动导入这些类型定义文件。

示例代码

假设我们有一个项目结构如下:

代码语言:txt
复制
project/
├── src/
│   └── index.ts
├── types/
│   └── custom.d.ts
└── tsconfig.json

custom.d.ts文件内容:

代码语言:txt
复制
declare module 'custom-module' {
    export function customFunction(): void;
}

tsconfig.json配置:

代码语言:txt
复制
{
  "compilerOptions": {
    "noImplicitAny": true,
    "typeRoots": ["./types"]
  }
}

index.ts中使用自定义模块:

代码语言:txt
复制
import { customFunction } from 'custom-module';

customFunction();

如果编译器仍然报错,可以尝试手动导入类型定义:

代码语言:txt
复制
/// <reference path="./types/custom.d.ts" />

import { customFunction } from 'custom-module';

customFunction();

通过以上步骤,可以确保在设置noImplicitAnytrue时,TypeScript能够正确加载并使用typeRoots指定的类型定义文件。

相关搜索:ssrs -当设置了“可用值”时,无法设置“默认值”当设置了较大的最大高度时,使用图像标记填充div无效仅当设置了Cache-Control标头时才启用UWSGI缓存仅当设置了item时才使用WHERE子句,否则选择所有行当文本左对齐并且设置了最大宽度时,如何使<ul>内容居中?当设置了正确的标头时,iOS设备上出现Ionic CORS问题当MQTT中设置了QoS级别1时,重传PUBACK的原因是什么?当设置了默认值时,为什么dotnet core [Authorize]需要一个方案当设置了backoffCoefficient时,如何计算持久函数的下一次重试时间?Vue:当设置了正确的条件时,为什么我的对话框没有出现?typescript -当您不知道是否存在默认设置时如何导出所有包含默认设置的内容当csrf_enabled为真(设置了SECRET_KEY)时,Flask-WTF抛出错误当CoordinatorLayout的宽度设置为wrap_content时,CoordinatorLayout隐藏了浮动操作按钮的一半当传递多个字段时,为什么在firebase中创建新文档时只设置了一个字段?当同一接口上绑定了多个IPv6地址时,如何为套接字设置特定IP当设置了AlarmManager.setAlarmClock()时,为什么报警图标不只在三星安卓9设备上显示?当设置了单元格setFillForegroundColor和SetFillPattern时,POI XSSFCellStyle图形将以PropertyTemplate为边框,将单元格完全变为黑色当CL的高度设置为wrap_Content时,为什么坐标布局( CL )隐藏了浮动操作按钮的一半?当父项在方向列的弹性容器中设置了flex-basis时,flex项的子项不采用父项的高度为什么当我继承了“母亲”类时,当访问说明符被设置为私有时,我不能在“孙女”类中创建“母亲”类对象?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

快速上手Vue开发:在项目中如何配置 tsconfig.json 文件?

–allowSyntheticDefaultImports boolean module === “system” 或设置了 --esModuleInterop 且 module 不为 es2015 /...–inlineSources boolean false 将代码与sourcemaps生成到一个文件中,要求同时设置了 --inlineSourceMap或 --sourceMap属性。...–mapRoot string 为调试器指定指定sourcemap文件的路径,而不是使用生成时的路径。当 .map文件是在运行时指定的,并不同于 js文件的地址时使用这个标记。...–newLine string (platform specific) 当生成文件时指定行结束符: “crlf”(windows)或 “lf”(unix)。...–sourceRoot string 指定TypeScript源文件的路径,以便调试器定位。当TypeScript文件的位置是在运行时指定时使用此标记。路径信息会被加到 sourceMap里。

1.2K20

TS类型定义详解:typestypeRoots@types,以及命名空间namespace

这种情况下引入了这种包,则会编译报错(没有设置 allowJS——allowJS 是 TypeScript 1.8 引进的一个编译项)。...type 的含义是定义自定义类型,当 TS 提供给你的基础类型都不满足的时候,可以使用 type 自由组合出你的新类型,interface 应该是对外输出的接口。...typeRoots: 用来指定默认的类型声明文件查找路径,默认为node_modules/@types, 指定typeRoots后,TypeScript 编译器会从指定的路径去引入声明文件,而不是node_modules...设置 types 或 typeings 属性指向捆绑在一起的类型定义文件。.../lib/main.d.ts"}如果主类型定义文件名是 index.d.ts 并且位置在包的根目录里,就不需要使用 types 属性指定了。

6.1K10
  • Typescript的tsconfig.json

    我们直接输入tsc或者tsc -p tsconfig.json时,默认会调用tsconfig.json; 在命令行上指定输入文件时,将忽略tsconfig.json文件。...这样的情况下,只能通过命令输入配置来运行,这也是为什么明明配置了tsconfig.json,但是没有生效。...当TypeScript文件的位置是在运行时指定时使用此标记。路径信息会被加到 sourceMap里 mapRoot 为调试器指定指定sourcemap文件的路径,而不是使用生成时的路径。...当 .map文件是在运行时指定的,并不同于 js文件的地址时使用这个标记。指定的路径会嵌入到 sourceMap里告诉调试器到哪里去找它们。...inlineSourceMap 生成单个sourcemaps文件,而不是将每sourcemaps生成不同的文件 inlineSources 将代码与sourcemaps生成到一个文件中,要求同时设置了

    2.2K30

    从0到1开启一个全新的TypeScript项目

    我本次的分享主要分为以下两个部分:首先探讨一下是否要引入 TypeScript,其次我们挑选了部门内比较典型的 TypeScript 项目,来带你尝试开启一个全新的 TypeScript 项目。...但如果只是这样其实还是不够的,因为我们完全可以忽略类型检查报的错,继续提交代码,那 TypeScript 也就没有意义了,怎么约束呢?...接下来我们来介绍一下 TypeScript 项目最重要的 tsconfig 配置,下图是我们项目使用的配置方案: tsconfig.json 这里我重点挑了几个参数:首先我们把 noEmit 设置成了...typeRoots 然后是 typeRoots,它默认值是 node_module 下的 @type,以及各个子路径下的 node_modules /@types。...需要注意,如果自定义 typeRoots,那么默认值就失效了,不要忘记手动把 node_modules/@type 也添加进去。

    66110

    TypeScript

    .map文件 “declarationMap”: true, socuceMap用来指定编译时是否生成.map文件 “sourceMap”: true, outFile用于指定输出文件合并为一个文件,只有设置...当设为true时,null和undefined值不能赋值给非这两种类型的值,别的类型的值也不能赋给他们,除了any类型,还有个例外就是undefined可以赋值给void类型 “strictNullChecks.../typings/*”] }, rootDirs可以指定一个路径列表,在构建时编译器会将这个路径中的内容都放到一个文件夹中 “rootDirs”: [], typeRoots用来指定声明文件或文件夹的路径列表...,如果指定了此项,则只有在这里列出的声明文件才会被加载 “typeRoots”: [], types用于指定需要包含的模块,只有在这里列出的模块的声明文件才会被加载 “types”: [], allowSyntheticDefaultImports...npm install clean-webpack-plugin html-webpack-plugin -D 项目中安装typescript依赖 npm install typescript //之前是全局安装

    1.4K20

    TS 从 0 到 1 - 其他

    # TypeScript 4.0 新特性 # 构造函数的类属性推断 当 noImplicitAny 配置属性被启用后,TypeScript 4.0 就可以使用控制流分析来推断类属性的类型。...项目的根目录 配置 TypeScript 编译器的选项 指定编译的文件 主要字段 files:设置要编译的文件的名称 include:设置要进行编译的文件,支持路径模式匹配 exclude:设置不进行编译的文件...在表达式和声明上有隐含的 any 类型时报错 "strictNullChecks": true, // 启用严格的 null 检查 "noImplicitThis": true, // 当..."paths": {}, // 指定模块名到基于 baseUrl 的路径映射的列表 "rootDirs": [], // 根文件夹列表,其组合内容表示项目运行时的结构内容 "typeRoots...生成单个 sourceMap 文件,而不是将 sourcemap 生成不同的文件 "inlineSources": true, // 将代码与 sourceMap 生成到一个文件中,要求同时设置了

    38410

    基于 Yarn 的 Monorepo 实践

    PnP 模式(没开启可以忽略这一步),那么还要参照文档操作下,不然 IDE 语言功能可能运行不正常: yarn dlx @yarnpkg/pnpify --sdk vscode 引入插件 参照 yarn...yarn plugin import typescript Workspace-tools 是工作区插件,必备。...", "typeRoots": ["src"], "types": ["node"] }, "include": ["src"] } //tsconfig.web.json {...但是它识别工作区命令执行完成的方式比较弱,就是进程退出,所以当我执行 yarn ws:dev 时,tsc -w 的编译挂起后使得拓扑执行就是个鸡肋了,而且控制台输出的也不好。...据我自身的经验来说 link 功能实现其实挺复杂,往往不是一个简单创建一个软链就可以的,要考虑: 当加载到软链模块执行其 require 时,require 加载常常会寻址到其自身的 node_modules

    1.6K20

    去除typescript代码类型

    同时如果有大量 ts 文件需要编译,将十分繁琐,所以就有了 tsconfig.json 用于描述将 TypeScript 转为 JavaScript 代码的配置文件。...(基本上就已经满足了我一开始的需求) 更多配置 => TypeScript: TSConfig Reference - Docs on every TSConfig option (typescriptlang.org...在表达式和声明上有隐含的 any类型时报错 "strictNullChecks": true, // 启用严格的 null 检查 "noImplicitThis": true, // 当...抛出错误 "noUnusedParameters": true, // 有未使用的参数时,抛出错误 "noImplicitReturns": true, // 并不是所有函数里的代码都有返回值时...生成单个 soucemaps 文件,而不是将 sourcemaps 生成不同的文件 "inlineSources": true, // 将代码与 sourcemaps 生成到一个文件中,要求同时设置了

    2.6K10
    领券