چگونه یک رابط که نشاندهنده نوع تاپل در تایپاسکریپت است را بنویسیم؟
خوشحالم که نسخه ۱.۳ تایپاسکریپت منتشر شد، اما چگونه میتوان یک اینترفیس نوشت که نوع تاپل را نشان دهد؟
به عنوان مثال
var data: [string, number, number];
چگونه یک اینترفیس IData بنویسم تا بتوانم همان کار را با نوشتن انجام دهم
var data: IData;
پاسخ شماره ۱
میدانم این یک سؤال قدیمی است، اما فکر میکنم میتوانید آنچه میخواهید را با موارد زیر انجام دهید:
type IData = [string, number, number];
سپس
var data: IData;
شما میتوانید این را در این مثال TypeScript Playground ببینید
پاسخ شماره ۲
توجه داشته باشید که با برخی از ویژگیهای جدیدی که قرار است اضافه شوند، مانند نوعهای اتحاد (union types)، شما تقریباً میتوانید آنچه میخواهید را به دست آورید. آخرین پیشنویس مشخصات شامل مثالی در این زمینه است (به https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.3.3 مراجعه کنید)
کد زیر مثالی از اینکه این ممکن است چگونه به نظر برسد نشان میدهد:
interface KeyValuePair extends Array<string | number> { 0: string; 1: number; }
var x: KeyValuePair = ["test", 42]; // OK
var y: KeyValuePair = [42, "test"]; // Error
اگر آخرین کد را از شاخه اصلی بگیرید و موارد بالا را کامپایل کنید، خواهید دید که کجا تخصیص به 'x' را معتبر تشخیص میدهد و تخصیص به 'y' را به عنوان یک خطا:
S:\src\TypeScript\bin>node tsc c:\temp\tuple.ts
c:/temp/tuple.ts(4,5): error TS2323: Type '[number, string]' is not assignable to type 'KeyValuePair'.
Types of property '0' are incompatible.
Type 'number' is not assignable to type 'string'.
