gpt4 book ai didi

typescript - tsconfig.json 的定义

转载 作者:搜寻专家 更新时间:2023-10-30 21:48:57 26 4
gpt4 key购买 nike

我想用 Typescript 编写代码,从运行时对象生成 tsconfig.json 文件。我在哪里可以得到这个对象的定义,例如类似于以下内容:

interface TSConfig [
compileOnSave?: boolean;
files?: string[];
}

最佳答案

您可以重用 typescript 模块中定义的一些类型(您可以通过 npm install typescript 获取)用于编译器选项和类型获取选项,尽管没有为完整的 tsconfig 定义类型.json,我们需要做一些条件类型魔术(在 typescript 2.8 中可用)来获取编译器选项的类型。枚举已导出,因此您可以直接使用它们。

import * as ts from 'typescript' // Import will be elided as long as we only use types from it, so we don't have the compiler code  loaded at runtime

type CompilerOptions = typeof ts.parseCommandLine extends (...args: any[])=> infer TResult ?
TResult extends { options: infer TOptions } ? TOptions : never : never;
type TypeAcquisition = typeof ts.parseCommandLine extends (...args: any[])=> infer TResult ?
TResult extends { typeAcquisition?: infer TTypeAcquisition } ? TTypeAcquisition : never : never;

interface TsConfig {

compilerOptions: CompilerOptions;
exclude: string[];
compileOnSave: boolean;
extends: string;
files: string[];
include: string[];
typeAcquisition: TypeAcquisition
}

注意 这样做的好处是编译器团队对 CompilerOptionsTypeAcquisition 类型所做的更改将反射(reflect)在您的代码中,当您更新包。缺点是它从编译器 API 中提取了一些类型,这些类型可能由于某种原因没有直接公开(尽管如果编译器团队更改它们,它们是 ts.parseCommandLine 结果的一部分,它将是一个破坏性的 API 更改)

关于typescript - tsconfig.json 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49485181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com