typescript - Record fonksiyon argümanı birleşim türü olarak, birleşim değerlerine atanamaz


Amaç, anahtarları ve fonksiyon değerlerini kısıtlamak için bir haritalayıcı için Record türü tanımını bildirmektir. Bu fonksiyonların argümanlarının farklı davranışları vardır, bu nedenle bir birleşim türü kullanılarak tanımlanmıştır.

PushNotificationPayloadVideoComment, PushNotificationPayload birleşim tipinin bir parçasıdır, ancak TS derleyicisi bunun birleşimine atanabilir olmadığını tespit eder

TypeScript sürümü: 4.3.2

TS Playground'da tam kod parçacığı için buraya tıklayın

Cevap #1

unknown kullanmak, atanan fonksiyonun herhangi bir parametre türüyle başa çıkabilecek kapasitede olması gerektiği anlamına gelir ve yalnızca belirli bir türle başa çıkabilen fonksiyonları kullanıyorsunuz.

Her geri çağırmayı uygun parametre türüne eşlemek için özel bir haritalanmış tür kullanabilirsiniz:

type Mapper = {
  [P in PushNotificationPayload as P['category']]?: (payload: P) => void
}

Oyun Alanı Bağlantısı