5

TypeScript は次のように述べています。

タイプ ' ' の値にプロパティ ' $1' が存在しません{ (pattern: string, flags?: string): RegExp; new(pattern: string, flags?: string): RegExp; }

タイプは、 TypeScript 0.8.2lib.d.tsに付属する定義を見ることで説明できます。

interface RegExp {
    /** 
      * Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search.
      * @param string The String object or string literal on which to perform the search.
      */
    exec(string: string): RegExpExecArray;
    /** 
      * Returns a Boolean value that indicates whether or not a pattern exists in a searched string.
      * @param string String on which to perform the search.
      */
    test(string: string): bool;
    /** Returns a copy of the text of the regular expression pattern. Read-only. The rgExp argument is a Regular expression object. It can be a variable name or a literal. */
    source: string;
    /** Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. */
    global: bool;
    /** Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. */
    ignoreCase: bool;
    /** Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. */
    multiline: bool;

    lastIndex: number;
}
declare var RegExp: {
    new (pattern: string, flags?: string): RegExp;
    (pattern: string, flags?: string): RegExp;
}

RegExp.$1私の質問は、これを変更/更新して、、などを参照できるようにするにはどうすればよいRegExp.$2ですか? 直接編集するつもりはないので、できれば個別に宣言できるものlib.d.ts(更新されると置き換えられる可能性が高い)

私はこれを無駄にしようとしました:

declare var RegExp: {
    new (pattern: string, flags?: string): RegExp;
    (pattern: string, flags?: string): RegExp;
    $1: any;
    $2: any;
    $3: any;
    $4: any;
    $5: any;
    $6: any;
    $7: any;
    $8: any;
    $9: any;    
}

string実際には型で宣言する必要があると思います。ただし、いずれにせよ、エラーは削除されません。

これに加えて、これが正確に何を意味するのかについても興味があります (なぜ ? ありとなしで宣言されているのnewですか?):

new (pattern: string, flags?: string): RegExp;
(pattern: string, flags?: string): RegExp;
4

1 に答える 1

2

あなたdeclare varは近いです。インターフェースはオープンなので、次のように書くだけです:

interface RegExp {
    $1: string;
    $2: string;
    // etc
}

2 つ目については、どちらも RegExp を作成するためnew RegExp('[A-Z]')RegExp('[A-Z]')機能するためです (型に関しては、呼び出し可能な関数とコンストラクター関数の両方です)。

于 2013-02-01T17:23:10.093 に答える