Mengingat fungsi Vanilla JS yang disederhanakan ini:

function getStringOrNumber(val) {
  if (typeof val === 'string') {
      return 'It was a string';
  } else {
      return 5;
  }
}

Bagaimana saya bisa memberi tahu TypeScript bahwa ketika mendapat string ia mengembalikan string, dan ketika mendapat nomor ia mengembalikan nomor?

Saya telah bereksperimen dengan metode yang berbeda dan menemukan bahwa menggunakan kelebihan ini berfungsi, tetapi tampaknya terlalu rumit dan saya bertanya-tanya apakah ada sesuatu yang saya lewatkan. Khususnya, dalam solusi ini, saya tidak mengerti mengapa baris ketiga diperlukan (lihat tautan di bawah untuk info lebih lanjut).

function useOverloadsExtra(val: string): string
function useOverloadsExtra(val: number): number
function useOverloadsExtra(val: string | number): string | number
function useOverloadsExtra(val: string | number): string | number {
    if (typeof val === 'string') {
        return 'It was a string';
    } else {
        return 5;
    }
}

Berikut adalah solusi lain yang saya coba

1
Christian Jensen 4 Maret 2020, 03:05

1 menjawab

Jawaban Terbaik