แนวทางใดที่แนะนำให้ทำสิ่งที่คล้ายกับการจับคู่รูปแบบใน TypeScript สิ่งที่ดีที่สุดที่ฉันเคยทำมาคือการให้ "tag"
-value ที่ไม่ซ้ำกันสำหรับแต่ละอินเทอร์เฟซที่ tuple และทำ switch/case -statement ตามนั้น
interface First { tag: 'one' }
interface Second { tag: 'two' }
type Third = First | Second
function match<T>(input: Third): T {
switch( input.tag ){
case 'one': {
...
}
case 'two': {
...
}
default: {
...
}
}
}
ในความคิดของฉัน นี่ยังเป็นวิธีที่ไม่เป็นมิตรและไม่เกิดผลในการทำเช่นนี้
ฉันไม่แน่ใจตัวเองว่าคุณจะผลักดันสิ่งนี้ได้ไกลแค่ไหนเนื่องจาก TypeScript ไม่ใช่การพิมพ์ระดับเฟิร์สคลาส แต่ฉันอยากลองดู
instanceof
แต่นั่นจะไม่ใช่ความคิดที่ดี -- instanceof เป็นอุปสรรคต่อการจัดหา mocks ที่ดีสำหรับการทดสอบ -- interfaces แทนที่จะเป็น instanceof คือจุดแข็งของ typescript - person ChaseMoskal   schedule 06.05.2018