Type 'Applications' is not assignable to type '{ [param: string]: string | number | boolean | readonly (string | number | boolean)[]; }'.
Index signature for type 'string' is missing in type 'Applications'
export type Applications = {
"date": string,
"firm": string,
"full name": string,
"phone": string,
"comment": string,
"code": string
}
Observable<PayerTypes>
. Другим он быть не может и ни от чего не зависит. Зачем там url
?type Urls = {
getPayerTypes: PayerTypes;
getNPCTypes: NPCTypes;
}
private httpGet<K extends keyof Urls>(url: K): Observable<Urls[K]> {
return this.http.get<Urls[K]>(url)
.pipe(
pluck('data'),
catchError(this.handleError)
);
}
React.KeyboardEvent
- это синтетическое событие, которое генерируется в React. KeyboardEvent
- это оригинальное событие, которое генерируется в браузере.KeyboardEvent
лежит в event.nativeEvent
у React.KeyboardEvent
.const closeByESC = (event: KeyboardEvent | React.KeyboardEvent) => {
document.addEventListener('keydown', closeByESC);
type Alph = 'Q' | 'W' | 'E' | 'R' | 'T' | 'Y' | 'U' | 'I' | 'O' | 'P' | 'A' | 'S' | 'D' | 'F' | 'G' | 'H' | 'J' | 'K' | 'L' | 'X' | 'Z' | 'C' | 'V' | 'B' | 'N' | 'M'
type CamelToSnake<T extends string> = T extends `${infer S1}${Alph}${string}` ? T extends `${S1}${infer S2}` ? `${Lowercase<S1>}_${CamelToSnake<Uncapitalize<S2>>}` : T : T;
type AsdSnake = CamelToSnake<'asdAsdAsd'> // asd_asd_asd
type SnakeToCamel<T extends string> = T extends `${infer S1}_${infer S2}` ? `${Lowercase<S1>}${Capitalize<SnakeToCamel<S2>>}` : T;
type AsdCamel = SnakeToCamel<'asd_asd_asd'> // asdAsdAsd
type SnakePropToCamel<T extends PropertyKey> = T extends string ? SnakeToCamel<T> : T;
type CamelPropToSnake<T extends PropertyKey> = T extends string ? CamelToSnake<T> : T;
let camelToSnakeCase: <T extends PropertyKey>(str: T) => CamelPropToSnake<T>;
type CamelObjectToSnake<T extends {[key: string]: any}> = {
[K in keyof T as CamelPropToSnake<K>]: T[K]
}
function camelCaseObject<T extends {[key: string]: any}>(obj: T) {
return Object.entries(obj)
.reduce((acc, [key, value]) =>
(acc[camelToSnakeCase(key as keyof T)] = value, acc),
{} as CamelObjectToSnake<T>
)
}
function camelToSnakeKeysOfArrayObject<T extends Array<{[key: string]: any}>>(arr: T) {
return arr.map(camelCaseObject) as {
[K in keyof T]: CamelObjectToSnake<T[K]>
};
}
camelToSnakeKeysOfArrayObject([{
aaAa: 1,
bbBb: true
}, {
aaAa: 'ggg'
}]);
.vue
по умолчанию просто Vue
, без конкретизации свойств и прочего. Чтобы были нормальные ts-типы их надо отдельно генерировать. Для этого есть либа vuedts, она не идеальна, но свою работу делает.export interface ICustomTableCellProps {
contact: IUser;
cellData: keyof IUser;
onChange: Function;
}
Должны приходить строка или число (name, lastname, age, pager)
contact[cellData]
, то cellData
очевидно может принимать только значения ключей contact
, а contact
- это IUser
... React.ComponentProps<typeof ForeignComponent>
и т.д. и т.п. <code></code>
:) )type Fuc = typeof func;
.Parameters<Func>
и ReturnType<Func>
соответсвенно. declare let refObject: RefObject<'some'>;
declare let legacyRef: LegacyRef<'some'>;
legacyRef = refObject; // ok
useRef<Тип>(null)
, но тогда сообщение об ошибке должно его содержать. return
поставьте if(!gif) return null;
и станет лучше.)undefined
, попытка получения свойства у undefined
(gif.<some>
) - очевидная ошибка. object
в современном ts занчит просто {}
без всяких свойств. Если вам нужен любой объект с любыми свойствами, то используйте Record<string, any>
. Однако по хорошему никаких any
быть не должно, вам следует чётко описать структуру получаемого объекта.useOnScreen
- это нестандартных хук. Реализаций в гугле полно разных. Так что приведите его код и скажите, что вы хотите от него добиться. interface CreatureBase {
type: string;
subtype: string;
params: unknown;
}
interface PeopleBase extends CreatureBase {
type: 'People';
}
interface PeopleChild extends PeopleBase {
subtype: 'child';
params: {
age: number;
school: string;
}
}
interface PeopleAdult extends PeopleBase {
subtype: 'adult';
params: {
height: number,
weight: number,
age: number
}
}
type Creature = PeopleChild | PeopleAdult; //...
const arr: Creature[] = [
{
type: 'People',
subtype: 'adult',
params: {
height: 1,
weight: 2,
age: 3
}
},
{
type: 'People',
subtype: 'child',
params: {
school: 'foo',
age: 3
}
},
{
type: 'People',
subtype: 'adult',
params: {
school: 'foo', // err
age: 3
}
}
]
as any
, или дважды кастанув в новый тип var as unknown as type
. Но не нужно.)