Autodesk / Autodesk/react-base-table

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

Abierto
#298 2 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
1.5k
Forks
170
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Lee types/index.d.ts junto con index.js y las declaraciones de Column para determinar si el paquete pretende que Alignment esté disponible tanto como valor como como tipo. Valida la declaración elegida con los ejemplos de importación del issue; estará terminado cuando los usuarios de TypeScript puedan usar la constante exportada de forma coherente con Column.Alignment sin ocultar el uso de tipos existente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
react, typescript
Área
frontend
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.