簡體   English   中英

Typescript 中泛型類型的非空斷言運算符

[英]Non-null assertion operator for generic type in Typescript

以下代碼:

type A = number | undefined
type B<C extends number> = C
let a: B<A>;

會給我錯誤:

Type 'A' does not satisfy the constraint 'number'. Type 'undefined' is not assignable to type 'number'.


是否可以假設 A 將被定義,例如:

let a: B<A!>
// or
let a: B<NonNullable<A>>

?

此非空斷言運算符旨在用於javascript變量。 將它用於 TypeScript 類型基本上是沒有意義的。

我很確定你的問題來自另一個地方,它迫使你以這種方式行事,而你需要解決這個問題。

無論如何,如果您想快速解決這個問題,您可能需要使用Exclude 實用程序類型

完整的解決方案:

type A = number | undefined
type B<C extends number> = C
const a: B<Exclude<A, undefined>> = 234;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM