typescript 如何找到像'RegExpExecArray'这样的内置类型的定义?

zzzyeukh  于 2022-11-26  发布在  TypeScript
关注(0)|答案(2)|浏览(201)

在下列程式码中,变数x的型别为RegExpExecArray | null(根据VSCode)。

const storeIdRegExp = /s(?<storeId>\d+)/u;
  const x = storeIdRegExp.exec(query);

如何找到RegExpExecArray的定义?我在任何地方都找不到它的文档。

注意:我确实在TypeScript源代码中找到了一些引用,特别是1.0lib-noErrors.js和lib.es2018.regexp.d.ts(我假设如果编译目标是ES 2018+,这也适用)。但是这并不容易找到,我也不能100%确定这些接口的联合是否是正确的答案。

lf5gs5x2

lf5gs5x21#

你应该写

let x: RegExpExecArray

然后使用“转到定义”命令(ctrl+click)
然后编辑器会显示它的所有定义片段:

// lib.es2018.regexp.d.ts
interface RegExpExecArray {
    groups?: {
        [key: string]: string
    }
}
// lib.es2015.d.ts
interface RegExpExecArray extends Array<string> {
    /**
     * The index of the search at which the result was found.
     */
    index: number;
    /**
     * A copy of the search string.
     */
    input: string;
}
ssm49v7z

ssm49v7z2#

TypeScript只会记录TypeScript特定的API。您指涉的范例是非TypeScript API,因此没有正式的TypeScript文件。
例如,RegExp.prototype.exec是一个JavaScript API,因此您应该从ECMAScript或MDN中找到它的文档。
您提到的类型引用,如RegExpExecArray和许多其他类型引用,是由in TypeScript repo和来自DefinitelyTyped的一些其他扩展维护的,但它们仅用作对官方文档的引用。

相关问题