доня.
это понятно
доня.
я говорю что это только для одного конкретного случая сделали
доня.
для итераторов
Дима
Ээ
Дима
Для итерируемых объектов
Дима
Всех, вообще всех
доня.
ну да, да
доня.
а если мне нужен протокол для чего-нибудь другого
Дима
Включая сеты, мапы, массивы, document.querySelector
Дима
Дима
В этом смысл символов
доня.
так нет абстракции такой, это все равно всё на уровне либо ручной проверки наличия полей, либо соглашений, что не очень
Дима
Наличие в объекте [Symbol.iterator] означает что объект знает о существовании протокола и корректно его имплементирует
Дима
Все остальные случаи являются изначально ошибочными
Дима
Вместо итератора подставь любой известный или даже свой символ
доня.
а потом мне нужен протокол с 10 полями и руками их проверяй, такое
Дима
доня.
да мало ли зачем, ты интерфейсы с более чем одним методом никогда не видел?
Дима
Ты не понимаешь, это не поле "моё значение"
Дима
Это именно метка протокола
доня.
да я понимаю
доня.
ещё раз
Дима
Ты либо имплементируешь его целиком, либо нет
Дима
Это не интерфейс, не думай о нем так
доня.
а, ну ты про это
Дима
Из чего следует, что протокол с десятью полями — это non sense
доня.
хм, ну ладно, да, в этом есть смысл
доня.
доня.
я понял что проверять имеет смысл только один метод
Alexander
Может кто знает. Виртуализация в биосе включена, hyper-v вырублен. А всё равно показывает отключенную виртуализацию. Что делать?
доня.
но остальные 10 могут нуждаться в реализации, поэтому "протокол с 10 полями - это non sense" вот это мне непонятно
доня.
а, ну тогда другой момент
доня.
если символы для методов, то не будет коллизии имён
Sergey
доня.
вот, всё, я только что прозрел
доня.
именованные методы вообще не нужны
доня.
нужны только методы на символах для реализации протоколов (ad-hoc полиморфизм)
доня.
всё остальное на функциях, как в рамде
ixplo
Anonymous
привет. как правильно файл считывать?
сделал:
var fs = require('fs');
var seedC;
fs.readFile('/testdata/seed-c.json', 'utf8', function (err, data) {
if (err) throw err;
seedC = JSON.parse(data);
});
Anonymous
Anonymous
а он есть(
доня.
в любом случае неправильно
Дима
Дима
доня.
доня.
так нельзя делать
ixplo
не нужно
Объяснитесь ) вот мне пришёл объект с методом-символом
ixplo
Имя у него символ
ixplo
Мне надо его или заранее знать, или выковыривать
Дима
Зачем тебе его знать?
ixplo
Чтоб вызвать
Дима
Если у тебя есть символ, предназначение которого тебе не ясно, то очевидно, что работать с ним ты не сможешь
Дима
В обычном объекте изначально может быть бесконечное число символов. Ты никогда не узнаешь для чего они
ixplo
Ща пример приведу
Дима
Я это к тому, что нужно действовать наоборот, и проверять наличие символов, которые тебе знакомы
Дима
Не надо
Дима
А если представить себе гипотетическую ситуацию, что твой модуль на необитаемом острове и ему нужен символ протокола
ixplo
Дима
То на этот случай есть глобальный реестр, в который можно положить ключ или узнать, какой символ предназначен для твоего ключа
Дима
Сам ты ковырять
Sergey
@ZeroBias как думаешь?
Object.prototype.toString.call(target).slice(8, -1)
это адекватный способ определять тип?
или же typeof + isArray хватит?
ixplo
хотя как ты расковыряешь чото хз )
Дима
const symbolProtocol = Symbol.for('my-protocol')
Symbol.keyFor(symbolProtocol) // => 'my-protocol'
Artem
Ребят, помогите пожалуйста, проблема с npm пакетами
Проект разрабатывался больше года, и постоянно дополнялся новыми npm пакетами, которые ставились через npm i xx --save или --save-dev и вот пришло время поднимать проект у других разработчиков и при команде npm i пакеты ставятся но похоже что ставятся не полностью. В конечном итоге, количество директорий существенно отличается от рабочей версии.
Версия Ноды постоянно менялась в процессе разработки и все пакеты ставились на разных версиях.
Подскажите пожалуйста как быстро возможно решить проблему, так чтобы все в конечном итоге работало
Возможно ли навести там порядок или это не посильная задача?
Дима
ixplo
{
a: 1,
[symbol]: 2
}
Дима
ixplo
ixplo
сверить его
Дима
Нет, это название символа в глобальном реестре, это не одно и то же
Sergey
ixplo
Дима
ixplo