re: TypeScript: type vs interface VIEW POST

type TAnimal = 'Dog' | 'Cat'

A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.
A computed property name must be of type 'string', 'number', 'symbol', or 'any'.
'TAnimal' only refers to a type, but is being used as a value here.
interface IAnimals {
  [a in TAnimal]: string

// This works.
type TAnimals = {
  [a in TAnimal]: string

But there is Record<TAnimal, string> for this.

Code of Conduct Report abuse