microsoft / microsoft/TypeScript
Error not issued when global type is an alias of an object type literal
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
🔎 Search Terms
array, constructor, bracket
🕗 Version & Regression Information
- This is a crash
⏯ Playground Link
💻 Code
// @noLib: true
// @target: esnext
declare global {
const Array: {
<T = unknown>(...args:any[]): Array<T>
new <T = unknown,>(...args:any[]): Array<T>
}
type Array<T> = {
[i: number]: T
length: number
}
}
// all of the below give "Property 'length' is missing in type '{}'...":
; ([1, 2, 3]) satisfies Array<number>;
; ([1, 2, 3]) satisfies { length: number };
declare const ar1: never[]
; ar1 satisfies { length: number };
declare const ar2: number[]
; ar2 satisfies { length: number }
// this should throw an error but it doesn't
// @ts-expect-error
; ([] as number[]) satisfies string[]
export { }
🙁 Actual behavior
Types created with the T[] and objects created with the [x as T] syntax are not typed as Array<T> but instead as {}.
🙂 Expected behavior
I expect either:
T[]syntax andArray<T>to be completely synonymous- A compiler error that the
Arraytype is not an instantiable type
Additional information about the issue
Related to #57009.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la reproduction liée dans TypeScript bug-workbench Playground et comparez le comportement de T[] avec celui de Array lorsque global Array est un littéral de type objet. Suivez la manière dont le compilateur gère l'alias global Array, la syntaxe des tableaux et l'assignabilité. C'est terminé si les deux formes se comportent soit de manière synonyme, soit si le type Array invalide produit une erreur du compilateur, les attentes de la reproduction étant couvertes par un test de régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 52/100