ค้นหาเว็บไซต์

typescript - ประเภทค่าที่ส่งกลับหลายค่า/แบบรวม


นี่ทำ

function foo(): () => void | string

หมายถึง, นั่น

a) ฟังก์ชัน foo อาจส่งค่ากลับเป็นสตริง หรือฟังก์ชันอื่นที่ไม่ส่งค่ากลับใด ๆ; หรือ

b) ฟังก์ชัน foo จะส่งคืนฟังก์ชันอีกตัว ซึ่งอาจส่งคืนสตริงหรือไม่ก็ได้

นอกจากนี้ คุณระบุทางเลือกอื่น (อันไหนที่ไม่ถูกต้อง) อย่างถูกต้องและชัดเจนได้อย่างไร?

คำตอบ #1

function foo():() => void | string : foo เป็นฟังก์ชันที่ไม่มีพารามิเตอร์นำเข้า และมันจะส่งคืนฟังก์ชันอีกตัวหนึ่งซึ่งผลลัพธ์ของฟังก์ชันนั้นจะเป็น void หรือ string

function foo(): void | string : foo คือฟังก์ชันที่ไม่มีพารามิเตอร์นำเข้าและจะส่งค่ากลับเป็น void หรือ string

function foo(): (() => void) | string : foo คือฟังก์ชันที่ไม่มีพารามิเตอร์เข้า และมันจะคืนค่าเป็น string หรือฟังก์ชันอีกตัวหนึ่งที่คืนค่า void

คำตอบ #2

() => void | string เป็นชนิดของฟังก์ชันที่อาจจะคืนค่าหรือไม่คืนค่าเป็นสตริง ซึ่งดูเหมือนไม่มีประโยชน์มากนักเนื่องจากฟังก์ชันที่คืนค่าสตริงก็สามารถถูกกำหนดค่าให้กับ () => void ได้อยู่แล้ว

ถ้าคุณต้องการ "หรือฟังก์ชัน หรือสตริง" คุณควรใช้วงเล็บ: (() => void) | string ในทำนองเดียวกับที่คุณจะใช้วงเล็บในกรณีอื่น ๆ ที่คุณต้องการใช้ตัวดำเนินการที่ไม่เรียงตามลำดับความสำคัญ