microsoft / microsoft/TypeScript
Intellisense does not work with [P in keyof T]
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Go
- Estrelas
- 111k
- Forks
- 14.3k
- Merge médio
- 2d 4h
- PRs com merge (30d)
- 132
Descrição
TypeScript Version: 2.1.5
Code
//Operators available for the object fields
export type Operators<T> = {
$elementMatch?: T | Operators<T>;
$in?: T[];
}
//Filter declaration.
export type Filter<T> = {
//field, you can assign a value, or an operator.
[P in keyof T]: Operators<T[P]> | T[P];
}
function query<T>(filter: Filter<T>) { }
//Sample class
class Sample {
foo: string;
bar: number;
}
query<Sample>({
//We want to put on the "foo" operator "$in"
value: {
//Intellisense then no output
}
});
Expected behavior:
Intellisense should display all available options.
For example:
$elementMatch
$in
Actual behavior:
Intellisense does not offer anything.
If the "[P in key of T]" is replaced by "[key: string]", then the Intellisense for operators begins to work, but in this case we lose the test fields.
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Reproduza a falha do IntelliSense usando o exemplo do TypeScript 2.1.5 com Operators, Filter e query. Comece rastreando o tratamento de conclusão para o tipo mapeado [P in keyof T]; a tarefa estará concluída quando as opções $elementMatch e $in aparecerem dentro do objeto de operadores sem perder as verificações dos campos mapeados.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- typescript
- Domínio
- developer-experience
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 45/100