Size: a a a

TypeScript — русскоговорящее сообщество

2020 April 16

AK

Andrey Kurnoskin in TypeScript — русскоговорящее сообщество
🦉 ⁣
странно, что ‘type’ in object
не является гардом
Да, к сожалению, не является — вероятно, либо по недосмотру, либо потому, что не позволяет никак осмысленно вывести тип св-ва
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
спасибо!!
источник

VK

Vladimir Kurchatkin in TypeScript — русскоговорящее сообщество
Andrey Kurnoskin
Да, к сожалению, не является — вероятно, либо по недосмотру, либо потому, что не позволяет никак осмысленно вывести тип св-ва
Просто такое довольно небезопасно в целом, как и этот тайпгард
источник

OK

Oleksandr Khotemskyi in TypeScript — русскоговорящее сообщество
а зачем эти приседания если всеравно в лоб хардкодженное проперти сравнивается - object['type'] === type
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
type WithType<T extends string> = {
 type: T;
};

function isType(
 object: { type?: unknown },
 type: string,
): object is WithType<typeof type> {
 if (typeof object.type === 'string') {
   return object.type === type;
 }
 return false;
}


сделал так
источник

OK

Oleksandr Khotemskyi in TypeScript — русскоговорящее сообщество
можно вообще сделать в лоб

function isType(object: object, type: string): boolean {
       return object['type'] === type
}

ничего не изменится даже если object['type'] undefined
источник

AK

Andrey Kurnoskin in TypeScript — русскоговорящее сообщество
Vladimir Kurchatkin
Просто такое довольно небезопасно в целом, как и этот тайпгард
Тайпгард однозначно небезопасен, потому что проверяет, например, не то, что в нем заявлено, да — с типом type: string я пгорячился
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
Oleksandr Khotemskyi
можно вообще сделать в лоб

function isType(object: object, type: string): boolean {
       return object['type'] === type
}

ничего не изменится даже если object['type'] undefined
Element implicitly has an 'any' type because expression of type '"type"' can't be used to index type '{}'.
 Property 'type' does not exist on type '{}'.
источник

VK

Vladimir Kurchatkin in TypeScript — русскоговорящее сообщество
Andrey Kurnoskin
Тайпгард однозначно небезопасен, потому что проверяет, например, не то, что в нем заявлено, да — с типом type: string я пгорячился
Дело даже не в этом, небезопасно даже если бы он проверял ровно то, что написано
источник

OK

Oleksandr Khotemskyi in TypeScript — русскоговорящее сообщество
🦉 ⁣
Element implicitly has an 'any' type because expression of type '"type"' can't be used to index type '{}'.
 Property 'type' does not exist on type '{}'.
function isType(object: any, type: string): boolean {
       return object['type'] === type
}
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
Oleksandr Khotemskyi
function isType(object: any, type: string): boolean {
       return object['type'] === type
}
меньше всего хочется втыкать any
источник

OK

Oleksandr Khotemskyi in TypeScript — русскоговорящее сообщество
🦉 ⁣
меньше всего хочется втыкать any
ну что object что any разницы особо нет
источник

OK

Oleksandr Khotemskyi in TypeScript — русскоговорящее сообщество
вообще сама функция выглядит странно если честно. Если нормально затипизировать то такого не нужно городить
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
Oleksandr Khotemskyi
ну что object что any разницы особо нет
в данном случае разницы нет, но по факту есть
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
Oleksandr Khotemskyi
вообще сама функция выглядит странно если честно. Если нормально затипизировать то такого не нужно городить
как предлагаешь затипизировать вход от вебсокета?
источник

VK

Vladimir Kurchatkin in TypeScript — русскоговорящее сообщество
Oleksandr Khotemskyi
вообще сама функция выглядит странно если честно. Если нормально затипизировать то такого не нужно городить
Не всегда это возможно
источник

OK

Oleksandr Khotemskyi in TypeScript — русскоговорящее сообщество
🦉 ⁣
в данном случае разницы нет, но по факту есть
Ну я отталкиваюсь от вопроса )
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
🦉 ⁣
как предлагаешь затипизировать вход от вебсокета?
собственно эта функция и является началом типизации
источник

🦉⁣

🦉 ⁣ in TypeScript — русскоговорящее сообщество
выясняю пришел ли ивент знакомый клиент
чтобы потом выбрать правильный валидатор объекта
источник

OK

Oleksandr Khotemskyi in TypeScript — русскоговорящее сообщество
🦉 ⁣
как предлагаешь затипизировать вход от вебсокета?
это сложно, я бы глянул как ребята в либах вебсокетных типизируют такое
источник