Autodesk / Autodesk/react-base-table

Type of Alignment (and other constants) in types/index.d.ts is a 'type' instead of a 'value'

Ouverte
#298 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
TypeScript
Étoiles
1.5k
Forks
170
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Currently, Alignment is exported as a variable directly in index.js
```
export { default as Column, Alignment, FrozenDirection } from './Column';
```
and is defined as
```
export const Alignment = {
LEFT: 'left',
CENTER: 'center',
RIGHT: 'right',
};
```

However, in types/index.d.ts, Alignment is specified as
```
export type Alignment = 'left' | 'right' | 'center';
```
which is a type, not a value. This means that a statement like
```
import { Alignment } from 'react-base-table'

const column = {
align: Alignment.CENTER
}
```

Will fail if compiled with typescript, since types cannot be used as values:
```
'Alignment' only refers to a type, but is being used as a value here.ts(2693)
```

Later in types/index.d.ts, Column.Alignment is typed:
```
export class Column extends React.Component> {
static readonly Alignment: {
readonly LEFT: 'left';
readonly CENTER: 'center';
readonly RIGHT: 'right';
};
static readonly FrozenDirection: {
readonly LEFT: 'left';
readonly RIGHT: 'right';
readonly DEFAULT: true;
readonly NONE: false;
};
}
```
So the code
```
import { Column } from 'react-base-table'

const column = {
align: Column.Alignment.CENTER
}
```
Will compile.

Alignment should likely be typed the same way, since Column.Alignment === Alignment.

Not sure exactly what the right solution is, since changing the types now is technically a breaking change to the types (Someone could currently be doing something like:
```
import { Column, Alignment } from 'react-base-table'

const myColumnAlignment: Alignment = Column.Alignment.CENTER
```

It's unclear to me if this is just happenstance, or it was actually intended.

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

Lisez types/index.d.ts avec index.js et les déclarations de Column afin de déterminer si le package prévoit que Alignment soit disponible à la fois comme valeur et comme type. Validez la déclaration choisie à l’aide des exemples d’importation de l’issue ; le travail est terminé lorsque les utilisateurs de TypeScript peuvent utiliser la constante exportée de manière cohérente avec Column.Alignment sans masquer l’utilisation existante des types.

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

Évaluation

Stack technique
react, typescript
Domaine
frontend
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
38/100

Recevez les nouvelles issues par e-mail

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