2 votes

Comment forcer le type d'une variable dans typescript ?

J'essaie d'écrire une fonction qui convertit une mangouste User à une chaîne de caractères avec des puces :

// Simplified version so you get the idea
interface IUser {
  name: string
}

function userDetails (user: IUser, keys: string[]): string {
  return keys.map((k: string): string => {
    return `- ${k} : ${user[k]}`
  })
  .join('\n')
}

Mais j'ai une étrange erreur de compilation, où user[k] est souligné :

La signature de l'index d'un type d'objet a implicitement un type 'any'.

Existe-t-il un moyen de "forcer" Typescript à administrer ce système ? user[k] est une chaîne de caractères ? J'ai essayé user[k] as string o <string> user[k] sans succès.

De même, si je retire le ${user[k]} de la chaîne retournée, alors le compilateur arrête de se plaindre

À part l'erreur de compilation, tout fonctionne au moment de l'exécution.

Merci !

2voto

Paleo Points 7884

Essayez ça :

function userDetails(user: IUser, keys: string[]): string {
    let dic: { [prop: string]: string } = <any>user
    return keys.map((k: string): string => {
        return `- ${k} : ${dic[k]}`
    })
    .join('\n')
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X