Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 February 26

ЕВ

Евгений Войтенко... in NodeUA - JavaScript and Node.js in Ukraine
Illya Klymov
тайпскрипт должен был ругнуться на 11 строку (учтите что это не один файл а куча разных)
Не могу картинку скинуть.
У меня так показывает, сейчас посмотрю ваш вариант
export class MapTest {
 public map = new Map<string, string>();
 public cacheCopy = { ...this.map };
 constructor() {
   this.cacheCopy.;
 }
}
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Евгений Войтенко
Не могу картинку скинуть.
У меня так показывает, сейчас посмотрю ваш вариант
export class MapTest {
 public map = new Map<string, string>();
 public cacheCopy = { ...this.map };
 constructor() {
   this.cacheCopy.;
 }
}
и?
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
cacheCopy не Map даже в вашем примере
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Illya Klymov
cacheCopy не Map даже в вашем примере
А зачем спредить Map?
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
А вы исходную задачу читали?
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Изначально это был объект-словарь. Потом в процессе рефакторинга у него сменился тип
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
И мы рефакторили соответственно подсказкам тайпскрипта
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Ведь ТС (ко-ко-ко (с)) делает рефакторинг безопасным!
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Illya Klymov
Ведь ТС (ко-ко-ко (с)) делает рефакторинг безопасным!
Ну такой себе кейс. Понятно, что это факап. Но вообще трудно определить, что получится после спрединга обьекта я так понимаю
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
Ну такой себе кейс. Понятно, что это факап. Но вообще трудно определить, что получится после спрединга обьекта я так понимаю
ничего трудного вообще нет
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
Ну такой себе кейс. Понятно, что это факап. Но вообще трудно определить, что получится после спрединга обьекта я так понимаю
При спреде и обратной упаковке объекта всегда получается объект того же типа.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
копия объекта
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
только без прототипа )
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
Ну такой себе кейс. Понятно, что это факап. Но вообще трудно определить, что получится после спрединга обьекта я так понимаю
после спреда объекта всегда сохраняется тип того, куда спредится
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
просто в ТС структурная типизация, и поэтому типы "сошлись"
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
(в голове у тайпскрипта)
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
он вообще считает что после спреда методы Мапа появляются на cacheCopy (если убрать там явное указание типа)
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
Ну такой себе кейс. Понятно, что это факап. Но вообще трудно определить, что получится после спрединга обьекта я так понимаю
Так был бы он  единственный, у меня только за этот год их с десяток
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
А январь традиционно мёртвый сезон для консалтинга
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Интересно, какой он выведет тип:
const a = { ...[1, 2, 3] };
источник