型アサーション [as 構文 | <> 構文

TypeScript でアサーションを入力する [as syntax | <> syntax]

https://huaweicloud.csdn.net/638f0fbbdacf622b8df8e283.html?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-1-107633405-blog-122438115.235 ^v28^ pc_relevant_t0_download&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-1-107633405-blog-122438115.235^v28^pc_relevant_t0_download&utm_relevant_index=2

  • 型アサーションをよく理解するには、1 つの文を深く理解する必要があります。値の詳細については、 TypeScript よりも詳しく理解できます 。

  • 型アサーション、アサーション アサーションは、その名の通り、何を判断するか、この文に代入すると、この型が何であるかを判断します。もちろん、これは私たちの主観的な思考ロジックであり、プログラムはそれを認識していないため、「私を信じてください。私は自分が何をしているのか知っています」とプログラムに伝える必要があります 。

このように、まだ十分に理解していない人もいるかもしれませんが、例として 2 つの関数を使用します。


/**
 * @param d 日期
 * @param f 想要格式化的字符串
 */
function dateFormatter(d: Date | string, f?: string) {
    const date = new Date(d);
    if (f) {
        return `${date.getFullYear()}${f}${date.getMonth() + 1}${f}${date.getDate()}`
    } else {
        return new Date(d);
    }
}

上記は単純な日付フォーマット用の小さな関数です. f はコネクタです. f に値がある場合, f を使用して日付を接続し, それを返します. 値がない場合, 新しい Date(d) を直接返します.

/**
 * @param d 日期字符串
 */
function dealDate(d: string) {
    return new Date(d).getTime();
}

dealDate()この関数は string 型の文字列を受け取り、この時間のミリ秒を返します。


次に、まず最初の dateFormatter() 関数を呼び出し、戻り値を受け取り、それを dealDate() 関数に渡します。これは、この時点で通常呼び出すものです。

const date = dealDate(dateFormatter('2020-7-28', '/'));

この呼び出しの問題は、  パラメーターが存在するため、dateFormatter() 関数が 文字列型を返さなければならないことがわかっていることです。f

しかし TS はそうは考えていません.TS の派生では、dateFormatter() 関数は Date 型の値を返す可能性があるため、dealDate() 関数が文字列型の値を渡す必要があることを示す赤いマークが表示されます。を渡しますが、文字列または日付の可能性があり、型が一致しません。

しかし、それはコンパイルできます。

  • この時点で、前述の状況が満たされ、渡された文字列は文字列でなければならないと結論付けることができます。この時点で、次を使用できます。

    const date = dealDate(dateFormatter('2020-7-28','/') as string); 
    
    // または
    const a = dealDate(<string>dateFormatter('2020-7-28', '/') ) を使用;コピー

これは Typescript の型アサーションです。

 

おすすめ

転載: blog.csdn.net/gcyaozuodashen/article/details/130062132