向后兼容性
charset 已弃用
默认值:
utf8发布版本: 1.0
在早期版本的 TypeScript 中,此选项控制从磁盘读取文本文件时使用的编码。 如今,TypeScript 假定使用 UTF-8 编码,但会正确检测 UTF-16(BE 和 LE)或 UTF-8 BOM。
importsNotUsedAsValues
允许的值:
remove、preserve、error默认值:
remove发布版本: 3.8
已弃用,推荐使用 verbatimModuleSyntax。
此标志控制 import 的工作方式,有 3 个不同的选项:
remove:删除仅引用类型的import语句的默认行为。preserve:保留所有其值或类型从未使用的import语句。这可能导致导入/副作用被保留。error:保留所有导入(与 preserve 选项相同),但当值导入仅用作类型时会报错。如果你希望确保没有意外导入值,但仍然显式保留副作用导入,这可能很有用。
此标志之所以有效,是因为你可以使用 import type 显式创建一个永远不应输出到 JavaScript 的 import 语句。
keyofStringsOnly 已弃用
- 发布版本: 2.9
当应用于具有字符串索引签名的类型时,此标志将 keyof 类型运算符更改为返回 string 而不是 string | number。
此标志用于帮助人们保留 TypeScript 2.9 发布之前的行为。
noImplicitUseStrict
- 发布版本: 1.8
你不应该需要这个。默认情况下,当将模块文件输出到非 ES6 目标时,TypeScript 会在文件顶部输出一个 "use strict"; 序言。此设置禁用该序言。
noStrictGenericChecks
- 发布版本: 2.5
TypeScript 在比较两个泛型函数时会统一类型参数。
type A = <T, U>(x: T, y: U) => [T, U];
type B = <S>(x: S, y: S) => [S, S];
function f(a: A, b: B) {
b = a; // 可以
a = b; // 错误Type 'B' is not assignable to type 'A'.
Types of parameters 'y' and 'y' are incompatible.
Type 'U' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'U'.}Try此标志可用于移除该检查。
out 已弃用
改用 outFile。
out 选项以不可预测或不一致的方式计算最终文件位置。此选项仅为向后兼容而保留,已弃用。
preserveValueImports
已弃用,推荐使用 verbatimModuleSyntax。
在某些情况下,TypeScript 无法检测到你正在使用导入。例如,考虑以下代码:
import { Animal } from "./animal.js";
eval("console.log(new Animal().isDangerous())");或使用“编译为 HTML”语言(如 Svelte 或 Vue)的代码。preserveValueImports 将阻止 TypeScript 删除导入,即使它看起来未被使用。
当与 isolatedModules 结合使用时:导入的类型必须标记为仅类型,因为一次处理单个文件的编译器无法知道导入是看似未使用的值,还是为了避免运行时崩溃而必须删除的类型。
suppressExcessPropertyErrors
- 发布版本: 1.6
此选项禁用多余属性错误的报告,例如以下示例中显示的错误:
type Point = { x: number; y: number };
const p: Point = { x: 1, y: 3, m: 10 };Object literal may only specify known properties, and 'm' does not exist in type 'Point'.Try此标志旨在帮助人们迁移到 TypeScript 1.6 中对新对象字面量的更严格检查。
我们不建议在现代代码库中使用此标志,你可以在需要的地方使用 // @ts-ignore 来抑制个别情况。
suppressImplicitAnyIndexErrors
发布版本: 1.4
相关: noImplicitAny
启用 suppressImplicitAnyIndexErrors 会抑制在索引对象时关于隐式 any 的错误报告,如下例所示:
const obj = { x: 10 };
console.log(obj["foo"]);Element implicitly has an 'any' type because expression of type '"foo"' can't be used to index type '{ x: number; }'.
Property 'foo' does not exist on type '{ x: number; }'.Try使用 suppressImplicitAnyIndexErrors 是一种相当激进的方法。建议改用 @ts-ignore 注释: