TypeScript <string, BrowserWindow> tupple позволяет использовать только значение параметра: string | BrowserWindow для метода forEach - PullRequest
0 голосов
/ 29 марта 2019

Я хочу получить доступ к значениям string и BrowserWindow набора <string, BrowserWindow> в методе .forEach(), но допускается только доступ к значению string или BrowserWindow.

Пример

let windows: [string, BrowserWindow]
windows.push('home', new BrowserWindow())

windows.forEach(function(value: string | BrowserWindow, index, array) {
    // Do stuff
}) 

Я хочу иметь возможность доступа к string и BrowserWindow значениям, а не string или BrowserWindow.

Пример * ** тысяча двадцать-один * тысяча двадцать два let windows: [string, BrowserWindow] windows.push('home', new BrowserWindow()) windows.forEach(function(valueString: string, valueWindow: BrowserWindow, index, array) { // Do stuff }) Будет ли forEach() внутри forEach(), с использованием различных значений, лучшим / единственным решением для этой проблемы?

1 Ответ

0 голосов
/ 29 марта 2019

forEach наследуется от массива и будет повторять все элементы кортежа.Его параметр обратного вызова должен быть объединением всех возможных элементов в массиве.

Из моего прочтения кода вы на самом деле не хотите кортеж, вы, вероятно, хотите массив кортежей типа [string, BrowserWindow]

class BrowserWindow{}
let windows: [string, BrowserWindow][] = []
windows.push(['home', new BrowserWindow()])
/// use an arrow function with array parameter destructuring 
windows.forEach(([valueString, valueWindow], index, array) => {

})

Или, если вы действительно хотите простоодин кортеж, и вы хотите получить доступ к составляющим кортежа, вы можете использовать деструктуризацию массива:

let windows: [string, BrowserWindow] = ['home', new BrowserWindow()];

let [valueString, valueWindow] = windows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...