Size: a a a

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

2021 January 22

DB

Dilame 🎩 Bowzee ⠀⠀⠀ོ... in TypeScript — русскоговорящее сообщество
Как можно задекларировать функцию так, чтобы она возвращала соответствующий переданному аргументу маппинг?

https://www.typescriptlang.org/play?#code/KYOwrgtgBAKsDOAXKBvAUFTAxA9jqAvFAOQBmexANBpgEICGAToSQEZPFoC+aaiAngAdgUALL1BggJYgA5i3SZMAbThIAdLhwBdAFxQkjGbIDcNFWsTqGjPVHARWwRmZ5oAJsADGAGyYjSMBAvRCkcEChEBEQAChlBMER9SwBKfXFJY2V4xO0gA
источник

DB

Dilame 🎩 Bowzee ⠀⠀⠀ོ... in TypeScript — русскоговорящее сообщество
Артем Ильченко
подскажите плз как вы избавляетесь от undefined когда юзаете find и вы уверены что indefined там быть не может. Я использую
!
может есть что-то более корректное?
А зачем избавляться от undefined? Как ты можешь быть уверен, что элемент действительно найден? TypeScript затем и нужен, чтобы избавлять от ошибок типизации - в случае с find она явно может вернуть undefined, и этот кейс надо обрабатывать соответствующим образом.

Радикально избавиться от этой проверки можно просто переименовав файл с .ts на .js - и все проблемы решаться сразу.

А использовать ! - костыль в данном случае
источник

В

Виталий in TypeScript — русскоговорящее сообщество
Привет.

Хочу написать функцию которая в зависимости от аргумента возвращает разные типизированые строковые константы.

const a = fn('asdf'); // у переменной a тип должен быть ’string’
const b = fn(123); // у переменной b тип должен быть ’unknown’

См. скрин.

Однако получаю ошибку:
Type '"string"' is not assignable to type 'T extends string ? "string" : "unknown"'.

Подскажите как правильно написать такую функцию?

Демка:

https://www.typescriptlang.org/play?ssl=12&ssc=19&pln=11&pc=1#code/PTAEBcE8AcFNQCoCVbgK4CcB2CbwLygDkAzuBgJZYDmRoAPsWlgNZYD2A7lkQNwBQ-AGbMAxuArssoIVgA8CAHwAKAIYZqALkQBKbQlCwAHuFhYAJiVBlKNUAH5iNqrVDaizNlx6gA3qH5QUAohUGUoOHZQ9WpQfHinchciHT9AoNAMVExpUiSaPnSAX0MAGxJ4X3SgrPRsJlYObkKgov42-lEpMlBVOJksZSJVEnMhFIEurB6AI37ZZQBGACYAZh1eIA
источник

АК

Артем Кусь in TypeScript — русскоговорящее сообщество
function<T>( ... ): T ?
источник

АК

Артем Кусь in TypeScript — русскоговорящее сообщество
А не
источник

АК

Артем Кусь in TypeScript — русскоговорящее сообщество
Mapping[K in keyof Test] ?
источник

DB

Dilame 🎩 Bowzee ⠀⠀⠀ོ... in TypeScript — русскоговорящее сообщество
Артем Кусь
Mapping[K in keyof Test] ?
Здесь надо как-то задекларировать зависимость возвращаемого значения от аргумента
источник

АК

Артем Кусь in TypeScript — русскоговорящее сообщество
Хмм 🤔
источник

K

Karen in TypeScript — русскоговорящее сообщество
всем привет. немного оффтоп. подскажите как выглядеть паттерн для такой даты? "2022-12-03T08:32:59.796+0000".... "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" не подошел.
источник

KS

Kirill Sukhomlin in TypeScript — русскоговорящее сообщество
Виталий
Привет.

Хочу написать функцию которая в зависимости от аргумента возвращает разные типизированые строковые константы.

const a = fn('asdf'); // у переменной a тип должен быть ’string’
const b = fn(123); // у переменной b тип должен быть ’unknown’

См. скрин.

Однако получаю ошибку:
Type '"string"' is not assignable to type 'T extends string ? "string" : "unknown"'.

Подскажите как правильно написать такую функцию?

Демка:

https://www.typescriptlang.org/play?ssl=12&ssc=19&pln=11&pc=1#code/PTAEBcE8AcFNQCoCVbgK4CcB2CbwLygDkAzuBgJZYDmRoAPsWlgNZYD2A7lkQNwBQ-AGbMAxuArssoIVgA8CAHwAKAIYZqALkQBKbQlCwAHuFhYAJiVBlKNUAH5iNqrVDaizNlx6gA3qH5QUAohUGUoOHZQ9WpQfHinchciHT9AoNAMVExpUiSaPnSAX0MAGxJ4X3SgrPRsJlYObkKgov42-lEpMlBVOJksZSJVEnMhFIEurB6AI37ZZQBGACYAZh1eIA
обсуждали недавно, напиши просто overload
источник

KS

Kirill Sukhomlin in TypeScript — русскоговорящее сообщество
function fn(arg: string): 'string';
function fn(arg: any): 'unknown';
function fn(arg: unknown) {
 return typeof arg === 'string' ? 'string' : 'unknown';
}

playground
источник

В

Виталий in TypeScript — русскоговорящее сообщество
Kirill Sukhomlin
function fn(arg: string): 'string';
function fn(arg: any): 'unknown';
function fn(arg: unknown) {
 return typeof arg === 'string' ? 'string' : 'unknown';
}

playground
Спасибо!
источник

АК

Артем Кусь in TypeScript — русскоговорящее сообщество
Тимофей 🛴
У тебя от проверки на undefined жопа отвалится ?
:DD
источник

キツネ in TypeScript — русскоговорящее сообщество
Артем Ильченко
да, но мне как-то не очень нравится что его потом везде тыкать нужно))
await find()!
источник

キツネ in TypeScript — русскоговорящее сообщество
не?
источник

キツネ in TypeScript — русскоговорящее сообщество
и вообще if (!value) handleValueNotFound();
источник

АК

Артем Кусь in TypeScript — русскоговорящее сообщество
キツネ
и вообще if (!value) handleValueNotFound();
Вообще норм тема
источник

DB

Dilame 🎩 Bowzee ⠀⠀⠀ོ... in TypeScript — русскоговорящее сообщество
キツネ
и вообще if (!value) handleValueNotFound();
поддерживаю))
источник

АК

Артем Кусь in TypeScript — русскоговорящее сообщество
Лучше 100 раз обработать все, чем в рантайме обосраться потом на проде
источник

АК

Артем Кусь in TypeScript — русскоговорящее сообщество
:DD
источник