LuaLS / LuaLS/lua-language-server

Type Narrow Exact Strings

Ouverte
#2,219 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

enhancement
Langage dominant
Lua
Étoiles
4.4k
Forks
442
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Another feature suggestion 😅

It would be useful to be able to type-narrow exact strings.

For example:

---@alias TestTable {test_group_a: {test_field_1: string, test_field_2: string}, test_group_b: {test_field_1: string, test_field_3: string}}

---@type "test_group_a" | "test_group_b"
local test

if test == "test_group_a" then
	---@type TestTable
	local test_table
	test1 = test_table[test].test_field_1
end

When we do if test == "test_group_a" then it would be nice if the type of test narrowed to test_group_a (which can then be used to successfully index test_table. As it is now there is no type narrowing so the inferred type of test1 is unknown when it should be string.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

L’exemple Lua de l’issue est le seul point d’entrée fourni ; utilisez-le pour reproduire les types actuels de test et test1. Le travail est considéré comme terminé lorsqu’une vérification d’égalité avec "test_group_a" restreint suffisamment test pour indexer TestTable et inférer test1 comme string, avec notamment la couverture du cas présenté.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
lua
Domaine
compilers, devtools
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.