İçeriğe atla

Kaynaklar

TypeScript

Tipler paketle birlikte gelir; projenizi doğru girişi çözümleyecek şekilde yapılandırın.

ball2d, her iki giriş için de TypeScript bildirimlerini içerir. Ayrı bir @types paketine gerek yoktur.

Projenizi yapılandırın

Bir Node.js host'u için paket dışa aktarımlarını Node'un yaptığı şekilde çözümleyin:

tsconfig.json
{
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "target": "ES2022",
    "lib": ["ES2022"],
    "types": ["node"],
    "strict": true
  }
}

ball2d/node bildirimleri DOM veya WebRTC tiplerine bağlı değildir, dolayısıyla lib ES2022'de kalabilir ve skipLibCheck'e gerek yoktur.

Tipleri içe aktarın

Genel tipler, fonksiyonlarla birlikte dışa aktarılır:

host.ts
import {
  createRoom,
  type HostPlayer,
  type NodeRoom,
} from 'ball2d/node';

function welcome(room: NodeRoom, player: HostPlayer) {
  return room.sendAnnouncement(
    `Welcome, ${player.name}`,
    player.id,
    null,
    'bold',
    0,
  );
}

MatchState gibi bazı tipler adlarıyla dışa aktarılmaz. Onlara, onları döndüren değerler üzerinden ulaşın:

TypeScript
type MatchState = ReturnType<NodeRoom['getState']>;

Tipler referansı her genel tipi ve nereden içe aktarılacağını listeler.

Geri çağırmalar ve this

Oda geri çağırmaları, oda üzerinde düz özelliklerdir. Her biri this olarak odayla çalışır, ancak room'u kapsayan ok fonksiyonları daha açıktır ve tiplerini korur:

TypeScript
room.onPlayerJoin = (player) => {
  void room.setPlayerTeam(player.id, 1);
};