我想要實作的可以像下面這樣完成:
// Will define a type that is an array with TWO elements where the first will be a string
// and the second a number
type SomeArrayType = [string, number];
我不喜歡對陣列使用這種型別宣告,我喜歡為此使用 Array 介面,例如:
// It will define a type that is an array of string with any number of elements in it
type AnotherArrayType = Array<string>;
但是由于 Array 介面只接受一個型別引數并且沒有明確的方法來定義長度,有沒有辦法使用介面來實作它,或者我真的必須使用第一種方法來定義我的型別?
謝謝??
uj5u.com熱心網友回復:
好吧,這是可能的,但需要撰寫一個小樣板來實作與我提到的第一種方法相同的方法:
需要創建一個擴展 Array 的介面
interface DefinedArray extends Array<string | number> {
length: 2;
0: string;
1: number;
}
然后,如果您使用它來鍵入變數
const myArray: DefinedArray = ['abc', 123]; // Correct
const anotherArray: DefinedArray = [123, 'abc']; // Error
const moreArray: DefinedArray = ['abc', 123, 'abc123']; // Error
宣告它使用
type SomeArrayType = [string, number];
或者
interface DefinedArray extends Array<string | number> {
length: 2;
0: string;
1: number;
}
會產生同樣的結果,兩者都顯示在官方檔案中:https ://www.typescriptlang.org/docs/handbook/2/objects.html#tuple-types
所以,我認為這取決于你決定在你的代碼中使用哪一個??
更新
使用上面的DefinedArray示例一段時間后,我注意到不值得使用這種方法,因為樣板可以擴展失控,因此,我建議改用元組定義。??
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/529774.html
標籤:数组打字稿仿制药
