Size: a a a

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

2021 January 19

LR

Lera Rosalene in TypeScript — русскоговорящее сообщество
Danil Chekalin
Почему webpack останавливает сборку на ts ошибках, если у меня в tsconfig strictNullChecks: true (для ide), а в конфиге webpack strictNullChecks: false?
{
 test: /\.tsx?$/,
   use: [
 env.development && {
   loader: 'babel-loader',
   options: { plugins: ['react-refresh/babel'] }
 },
 {
   loader: 'ts-loader',
   options: {
     transpileOnly: true,
     compilerOptions: {
       module: 'esnext',
       strictNullChecks: false
     }
   }
 }
].filter(Boolean)
}
Так это же не все ошибки отключает
источник

LR

Lera Rosalene in TypeScript — русскоговорящее сообщество
Если в TS очевидная ошибка типа const x = (a: string) => 0; x() то оно и с этим флагом свалится
источник

DB

Dilame 🎩 Bowzee ⠀⠀⠀ོ... in TypeScript — русскоговорящее сообщество
источник

キツネ in TypeScript — русскоговорящее сообщество
Denis Chertenko
откуда в библиотеке RecordType ? Не могу найти определение
возьми DefaultRecordType? вроде как он exported
источник

M

Maksim Sharov in TypeScript — русскоговорящее сообщество
как сделать type variable обязательным для передачи в функцию?

например, для примера ниже

export const test = <T,>(args: Meta<T>): Meta<T> => args;

вызов test() возможен, потому что  Meta опционально принимает тип T, я же хочу, чтобы тип ожидался точно
источник

M

Maksim Sharov in TypeScript — русскоговорящее сообщество
Maksim Sharov
как сделать type variable обязательным для передачи в функцию?

например, для примера ниже

export const test = <T,>(args: Meta<T>): Meta<T> => args;

вызов test() возможен, потому что  Meta опционально принимает тип T, я же хочу, чтобы тип ожидался точно
источник

LC

Lapis Cursed in TypeScript — русскоговорящее сообщество
Как с чем-то подобным бороться в тс:
export interface Func<TResult> {
   (): TResult;
   <T>(arg0: T):TResult;
   <T1,T2>(arg0: T1,arg1: T2):TResult;
   <T1,T2,T3>(arg0: T1,arg1: T2,arg2: T3):TResult;
...
   <T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>(arg0: T1,arg1: T2,arg2: T3,arg3: T4,arg4: T5,arg5: T6,arg6: T7,arg7: T8,arg8: T9,arg9: T10,arg10: T11,arg11: T12,arg12: T13,arg13: T14,arg14: T15,arg15: T16):TResult;
}
источник

T

TemA in TypeScript — русскоговорящее сообщество
Ужас
источник

LC

Lapis Cursed in TypeScript — русскоговорящее сообщество
Ну почему еще ничего не придумали, чтобы бороться с этим, ведь есть штуки вроде Object.assign, мы не всегда, конечно, знаем типы, но когда знаем, почему нет
источник

MK

Maxim Koylo in TypeScript — русскоговорящее сообщество
Может просто код говно?
источник

T

TemA in TypeScript — русскоговорящее сообщество
Maxim Koylo
Может просто код говно?
+
источник

LC

Lapis Cursed in TypeScript — русскоговорящее сообщество
Maxim Koylo
Может просто код говно?
Ну, тогда в es код говно:
interface ObjectConstructor {
   assign<T, U>(target: T, source: U): T & U;
   assign<T, U, V>(target: T, source1: U, source2: V): T & U & V;
   assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
   ...
}
источник

MK

Maxim Koylo in TypeScript — русскоговорящее сообщество
Lapis Cursed
Ну, тогда в es код говно:
interface ObjectConstructor {
   assign<T, U>(target: T, source: U): T & U;
   assign<T, U, V>(target: T, source1: U, source2: V): T & U & V;
   assign<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
   ...
}
ты не видишь разницы между 4 параметрами и 16?
источник

キツネ in TypeScript — русскоговорящее сообщество
16 = 4^2
источник

LC

Lapis Cursed in TypeScript — русскоговорящее сообщество
Maxim Koylo
ты не видишь разницы между 4 параметрами и 16?
Ну, может их не завели потому, что нет средств, чтобы продолжить? Когда типы можно определить, все должно работать красиво, а эта проблема уже живет очень давно, видимо считают, что достаточно завести конечное количество.
источник

KS

Kirill Sukhomlin in TypeScript — русскоговорящее сообщество
Lapis Cursed
Как с чем-то подобным бороться в тс:
export interface Func<TResult> {
   (): TResult;
   <T>(arg0: T):TResult;
   <T1,T2>(arg0: T1,arg1: T2):TResult;
   <T1,T2,T3>(arg0: T1,arg1: T2,arg2: T3):TResult;
...
   <T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>(arg0: T1,arg1: T2,arg2: T3,arg3: T4,arg4: T5,arg5: T6,arg6: T7,arg7: T8,arg8: T9,arg9: T10,arg10: T11,arg11: T12,arg12: T13,arg13: T14,arg14: T15,arg15: T16):TResult;
}
Никак вроде бы. Такая же фигня есть и в Scala, и в Haskell
источник

LC

Lapis Cursed in TypeScript — русскоговорящее сообщество
Kirill Sukhomlin
Никак вроде бы. Такая же фигня есть и в Scala, и в Haskell
В хаскелле это да.
источник

AD

Apache DOG™ in TypeScript — русскоговорящее сообщество
Lapis Cursed
Как с чем-то подобным бороться в тс:
export interface Func<TResult> {
   (): TResult;
   <T>(arg0: T):TResult;
   <T1,T2>(arg0: T1,arg1: T2):TResult;
   <T1,T2,T3>(arg0: T1,arg1: T2,arg2: T3):TResult;
...
   <T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>(arg0: T1,arg1: T2,arg2: T3,arg3: T4,arg4: T5,arg5: T6,arg6: T7,arg7: T8,arg8: T9,arg9: T10,arg10: T11,arg11: T12,arg12: T13,arg13: T14,arg14: T15,arg15: T16):TResult;
}
Я могу поделиться
источник

AD

Apache DOG™ in TypeScript — русскоговорящее сообщество
И в хаскеле и в скале
источник

AD

Apache DOG™ in TypeScript — русскоговорящее сообщество
Есть компиляторные плагины которые генерируют во эту фигню
источник