당신이 당신의 호의를 타이프 스크립트로 사용합니까? (2부)
제네릭
이 문제에 대해 관심이 있는 사람은 어떤 문제가 발생했는지 확인하고 문제를 해결할 수 있는 방법이 무엇인지 알고 있습니다. Lembram dos util 유형? No caso do Pick, por exemplo, vc faz uso de dois generics um para o tipo base que vc quer manipular eo outro para as key desse tipo. A sintaxe de pick é: Pick<Type, Keys>
Ah mas como eu sei quando usar isso?
기본 기능에는 일반, 고유 유형, 조건부 유형 등이 있습니다.
예시
const foo = <MeuTipo>(value: MeuTipo): MeuTipo => value;
/* caso vc queira usar via type inferrence (ts consegue analisar o seu codigo e definir o tipo)*/
foo(1); // logo value será um number
/* caso vc queira assumir que será um tipo específico */
foo<number>(1); // se vc colocar uma string o ts vai acusar um erro
/* caso vc queira assumir mais de um tipo possível */
foo<string | number>('a'); // a função vai aceitar number ou strings
맞춤 유틸리티 유형
Para criar o seu próprio util type vc deve ter em mente que ele deve ser simples(pq senão vira um monstrinho) e o que ele deve fazer.
Vc vai precisar usar generics (provavelmente) 및 vários utils do ts. Bom... vamos aos exemplos.
WithPrefix(버전 1)
Basicamente vamos adicionar um prefixo para as keys de um Type definido, logo precisaremos de 2 generics (Type e Prefix)
type WithPrefix<Type, Prefix extends string> = {
[Key in keyof Type as Key extends string ? `${Prefix}${Capitalize<Key>}` : Key]: Type[Key];
}
type Person = {
name: string;
age: number;
};
type PersonWithPrefix = WithPrefix<Person, 'person'>;
Isso funciona와 같은 분석 도구:
const foo = <MeuTipo>(value: MeuTipo): MeuTipo => value;
/* caso vc queira usar via type inferrence (ts consegue analisar o seu codigo e definir o tipo)*/
foo(1); // logo value será um number
/* caso vc queira assumir que será um tipo específico */
foo<number>(1); // se vc colocar uma string o ts vai acusar um erro
/* caso vc queira assumir mais de um tipo possível */
foo<string | number>('a'); // a função vai aceitar number ou strings
Para criar o seu próprio util type vc deve ter em mente que ele deve ser simples(pq senão vira um monstrinho) e o que ele deve fazer.
Vc vai precisar usar generics (provavelmente) 및 vários utils do ts. Bom... vamos aos exemplos.
WithPrefix(버전 1)
Basicamente vamos adicionar um prefixo para as keys de um Type definido, logo precisaremos de 2 generics (Type e Prefix)
type WithPrefix<Type, Prefix extends string> = {
[Key in keyof Type as Key extends string ? `${Prefix}${Capitalize<Key>}` : Key]: Type[Key];
}
type Person = {
name: string;
age: number;
};
type PersonWithPrefix = WithPrefix<Person, 'person'>;
Isso funciona와 같은 분석 도구:
extends string
) in keyof
). as
para definir uma nova key in keyof Type
tivemos que verificar se a nossa Key é uma string usando a expressão Key extends string
O retorno disso (se vc passar o mouse em cima no seu vscode) será:
type PersonWithPrefix = {
personName: string;
personAge: number;
}
맨 위!
Mas e se vc quiser somente para algumas key???
Bom... aí vamos para a versão 2
WithPrefix(버전 2)
Agora nós queremos usar o prefixo somente para algumas keys, podemos usar um Pick no nosso Type ou fazer um novo generic.
type PersonWithPrefix = WithPrefix<Pick<Person, 'name'>, 'person'>;
/* o retorno será:
type PersonWithPrefix = {
personName: string;
}
*/
type WithPrefix<Type, Prefix extends string, Keys extends keyof Type = keyof Type> = {
[Key in Keys as Key extends string ? `${Prefix}${Capitalize<Key>}` : Key]: Type[Key];
}
type Person = {
name: string;
age: number;
};
type PersonWithPrefix = WithPrefix<Person, 'person'>;
type JustPersonNameWithPrefix = WithPrefix<Person, 'person', 'name'>;
O que mudamos:
extends keyof Type
) = keyof Type
) O retorno disso (se vc passar o mouse em cima dos dois ultimos types que criamos no seu vscode):
type PersonWithPrefix = {
personName: string;
personAge: number;
}
type JustPersonNameWithPrefix = {
personName: string;
}
결론
Com isso pudemos ver mais sobre generics, como criar nosso próprio util type, como passar um default para um generic e como percorrer keys de um type, além de dar um novo "nomezinho"pra essa key.
Lembre-se de usar com cuidado e semper prezando pela simplicidade no seu código.
최종 vc는 vc mesmo에 대한 coda somente, mas sim para toda a sua equipment.
Reference
이 문제에 관하여(당신이 당신의 호의를 타이프 스크립트로 사용합니까? (2부)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/matvaleriano/como-usar-o-typescript-a-seu-favor-parte-2-1hg6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(당신이 당신의 호의를 타이프 스크립트로 사용합니까? (2부)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/matvaleriano/como-usar-o-typescript-a-seu-favor-parte-2-1hg6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)