microsoft / microsoft/TypeScript
[bug] TemplateStringsArray is incompatible with literal array type
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
TypeScript Version: 2.4.0
Code
// A *self-contained* demonstration of the problem follows...
interface SQLQuery<TResult> {
__result: TResult;
}
declare function sql(
literals: ['SELECT id FROM users'],
...placeholders: any[]
): SQLQuery<{id: number}>;
declare function querySync<TResult>(q: SQLQuery<TResult>): Array<TResult>;
const values: Array<{id: number}> = querySync(sql`SELECT id FROM users`);
Expected behavior:
Typescript should see that the input string 'SELECT id FROM users' matches the expected literals of ['SELECT id FROM users'] and use the declared function, allowing me to generate an overloaded version of the sql function for each query.
Actual behavior:
I get the error:
src/index.ts(23,50): error TS2345: Argument of type 'TemplateStringsArray' is not assignable to parameter of type '["SELECT id FROM users"]'.
Property '0' is missing in type 'TemplateStringsArray'.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con la demostración autónoma en src/index.ts y sigue cómo TypeScript 2.4 comprueba la llamada sqlSELECT id FROM users frente al parámetro de matriz literal declarado. La tarea está terminada cuando el ejemplo pasa la comprobación de tipos y querySync recibe el resultado esperado Array<{id: number}> sin el error TemplateStringsArray.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100