Skip to content
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待

向后兼容性

charset 已弃用

  • 默认值: utf8

  • 发布版本: 1.0

在早期版本的 TypeScript 中,此选项控制从磁盘读取文本文件时使用的编码。 如今,TypeScript 假定使用 UTF-8 编码,但会正确检测 UTF-16(BE 和 LE)或 UTF-8 BOM。

importsNotUsedAsValues

已弃用,推荐使用 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 在比较两个泛型函数时会统一类型参数。

ts

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 无法检测到你正在使用导入。例如,考虑以下代码:

ts
import { Animal } from "./animal.js";

eval("console.log(new Animal().isDangerous())");

或使用“编译为 HTML”语言(如 Svelte 或 Vue)的代码。preserveValueImports 将阻止 TypeScript 删除导入,即使它看起来未被使用。

当与 isolatedModules 结合使用时:导入的类型必须标记为仅类型,因为一次处理单个文件的编译器无法知道导入是看似未使用的值,还是为了避免运行时崩溃而必须删除的类型。

suppressExcessPropertyErrors

  • 发布版本: 1.6

此选项禁用多余属性错误的报告,例如以下示例中显示的错误:

ts
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

启用 suppressImplicitAnyIndexErrors 会抑制在索引对象时关于隐式 any 的错误报告,如下例所示:

ts
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 注释:

ts
const 
obj
= {
x
: 10 };
// @ts-ignore
console
.
log
(
obj
["foo"]);
Try