簡體   English   中英

為什么我不能在 TS 中返回字符串文字類型

[英]Why can't I return a string literal type in TS

我不明白以下錯誤:

type Prefix = 'Ms' | 'Mrs' | 'Mr'

const broken = <T extends Prefix>(prefix: T): T => {
    // do something
    return 'Ms';  
 
    // If I do `return 'Ms' as 'Ms'` then it works

}

const works = <T extends Prefix>(prefix: T): T => {
    // do something
    return p;
}

const alsoWorks = (): Prefix => {
    // do something
    return 'Ms';
}

broken的方法給了我

類型“Ms”不可分配給類型“T”。 '"Ms"' 可分配給類型為'T' 的約束,但可以使用約束'Prefix' 的不同子類型來實例化'T'。

不知道為什么這種方法不起作用,但其他兩種方法?

TypeScript 抱怨以下調用不起作用:

const res: 'Mr' = broken<'Mr'>('Mr');

如果T被實例化為Ms以外的其他東西,則您的return 'Ms'違反了返回類型T

我想你正在尋找 -

broken<Prefix>('Ms')

或者

broken('Ms' as Prefix)

暫無
暫無

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

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