cari

Rumah  >  Soal Jawab  >  teks badan

Apakah maksud simbol "ampersand (&)" dalam definisi jenis TypeScript?

<p>Dalam baris 60359 fail definisi jenis ini, terdapat pernyataan berikut: </p> <pre class="brush:php;toolbar:false;">type ActivatedEventHandler = ( ev: Windows.ApplicationModel.Activation.IActivatedEventArgs & WinRTEvent<sebarang> ) => batal;</pre> <p>Dalam konteks ini, apakah maksud simbol <kod>&</kod> </p>
P粉668804228P粉668804228458 hari yang lalu415

membalas semua(2)saya akan balas

  • P粉578343994

    P粉5783439942023-08-23 09:47:27

    Jenis persimpangan dalam Typescript

    • A & mewakili jenis persimpangan dalam konteks jenis dalam TS.
    • Ia menggabungkan semua sifat dua jenis objek bersama-sama dan mencipta jenis baharu.

    Contoh:

    type dog = {age: number, woof: Function};
    type cat = {age: number, meow: Function};
    
    // 类型weird是cat和dog的交集
    // 它需要具有它们的所有属性的组合
    type weird = dog & cat;
    
    const weirdAnimal: weird = {age: 2, woof: () => {'woof'}, meow: () => {'meow'}}
    
    interface extaprop {
        color: string
    }
    
    type catDog = weird & extaprop; // 类型现在还添加了color属性
    const weirdAnimal2: catDog = {age: 2, woof: () => {'woof'}, meow: () => {'meow'}, color: 'red'}
    
    
    // 这与联合类型不同
    // 下面的类型表示猫或狗
    type dogOrCat = dog | cat;

    balas
    0
  • P粉148434742

    P粉1484347422023-08-23 00:44:51

    & mewakili persimpanganjenis dalam kedudukan jenis.

    Lebih banyak dokumentasi TypeScript tentang jenis persimpangan:

    https://www.typescriptlang.org/docs/handbook/2/objects.html#intersection-types

    Dipetik daripada dokumen di atas:

    interface ErrorHandling {
      success: boolean;
      error?: { message: string };
    }
    
    interface ArtworksData {
      artworks: { title: string }[];
    }
    
    interface ArtistsData {
      artists: { name: string }[];
    }
    
    // 这些接口被组合在一起,以具有
    // 一致的错误处理和它们自己的数据。
    
    type ArtworksResponse = ArtworksData & ErrorHandling;
    type ArtistsResponse = ArtistsData & ErrorHandling;
    
    const handleArtistsResponse = (response: ArtistsResponse) => {
      if (response.error) {
        console.error(response.error.message);
        return;
      }
    
      console.log(response.artists);
    };

    balas
    0
  • Batalbalas