javascript - Değere dayalı gereken Typescript türü


Ben TypeScript'e yeniyim ve başka bir type'ın değerine bağlı olarak bir type'ı zorunlu hale getirmenin bir yolu olup olmadığını merak ediyordum:

type TextInput = {
    isValid?: boolean;
    validMessage?: string;
}

isValid true olduğunda validMessage'i zorunlu yapmak mümkün mü?

Cevap #1

Ayrımcı birleşimleri kullanmanız gerekiyor:

type Valid = {
    isValid: true;
    validMessage: string
}

type Invalid = {
    isValid: false;
}

type TextInput = Valid | Invalid


const foo = (props: TextInput) => {
    if (props.isValid) {
        props.validMessage // ok
    } else {
        props.isValid // false
        props.validMessage // error
    }
}

Oyun alanı

İlgili belgeler için ayrıca bakınız

İlgili makaleler