typescript - ระบุอาร์เรย์เป็นทูเพิล
ตัวอย่างเช่น ฉันมีคลาสนามธรรม:
type Tuple = [string, number]
abstract class SomeAbstractClass {
tuples: Tuple[]
}
แต่เมื่อฉันต้องการใช้งานคลาสนี้
class SomeConcreteClass implements SomeAbstractClass {
public tuples = [
['hello', 3],
['world', 4]
]
}
ฉันได้รับข้อผิดพลาด '(string | number)[][] ไม่สามารถกำหนดค่าให้กับ Tuple[]' วิธีที่จะบอก Typescript ว่าอาร์เรย์ที่ฉันให้มานั้นตรงตามอินเทอร์เฟซจริงๆ คืออะไร?
คำตอบ #1
เพียงแค่ใช้ชนิดข้อมูลที่ชัดเจน:
type Tuple = [string, number]
abstract class SomeAbstractClass {
tuples: Tuple[] = null as any
}
class SomeConcreteClass implements SomeAbstractClass {
public tuples: Tuple[] = [
['hello', 3],
['world', 4]
]
}
สมบัติ tuples ของ SomeConcreteClass สามารถเปลี่ยนแปลงได้ ดังนั้น TypeScript จึงไม่แน่ใจว่ามันสามารถกำหนดค่าให้กับ tuples ของคลาสนามธรรมได้หรือไม่
