IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

React Discussion :

Problème avec le type d'une variable


Sujet :

React

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 146
    Par défaut Problème avec le type d'une variable
    Bonjour à tous,

    J'ai un message d'erreur que je présente tout de suite
    Nom : Screenshot 2025-04-25 at 22.43.06.png
Affichages : 69
Taille : 78,0 Ko

    Je ne comprends pas pourquoi "Type 'number | undefined' is not assignable to type 'number'" alors que station?.id_station est défini comme un number

    Si je laisse ma souris sur station?.
    Nom : Screenshot 2025-04-25 at 22.44.54.png
Affichages : 62
Taille : 78,7 Ko
    Je vous que id_station:number

    Si je laisse ma souris sur id_station
    Nom : Screenshot 2025-04-25 at 22.45.58.png
Affichages : 63
Taille : 17,1 Ko
    Mais pourquoi là je lis number | undefined

    Comment est-ce possible?

    Si station?.id_station est "number | undefined", peut-on le forcer à être un "number" uniquement?

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 569
    Par défaut
    dans l'expression station?.id_station, le ? fait que si station contient undefined, alors la propriété ne sera pas lu (ce qui évite un message d'erreur à l'exécution) et toute l'expression retourne undefined.

    donc la question à ce poser est de savoir est ce que station peut contenir undefined à ce moment là ? est ce que c'est un fonctionnement prévu dans votre code ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 146
    Par défaut
    Hello
    Merci beaucoup pour ta réponse et désolé pour ma réaction tardive.

    donc la question à ce poser est de savoir est ce que station peut contenir undefined à ce moment là ?
    Non, elle est toujours définie et obligatoire et c'est toujours un nombre.

    Je ne suis pas expert avec typoscript et je vois alors qu'il y a un autre problème si j'enéève le ? comme par exemple ici

    <ReloadPage stationId={station.id_station} style={styles.reload} onChange={setSortKey } />
    Dans ce cas, mon erreur se déplace à 'station'
    Nom : Screenshot 2025-04-30 at 19.47.37.png
Affichages : 13
Taille : 167,7 Ko
    Ce que je comprends pas c'est que dans l'image ci-dessus, id_station est bien défini comme un number, non?

    Je suppose donc que l'erreur doit venir d'ici
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      const {data: getstation, isFetching} = useFetchQuery("/getstation/[id]", {id: params.id})
     
      const measures = getstation?.stations?.[0].measures
      const station = getstation?.stations?.[0]
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    '/getstation/[id]': {
            response: number, 
            id: number,
            method: string,
            next: string | null,
            fields: {
                id_field: number,
                field_name: string,
                field_longname: string,
                field_city: string,
                field_lat: number,
                field_lng: number
            }[],
            stations: {
                id_field: number,
                field_name: string,
                id_station: number,
                station_longname: string,
                id_station_type: number,
                station_type_name: string,
                station_archive: number,
                lat: number,
                lng: number,
                alt: number,
                measures?: {
                    datasets?: {
                        data?:{
                            value: number,
                            label: string,
                            date: string,
                            dataPointText: number
                        }[],
                        label: string,
                        showLine:boolean,
                        borderColor:string,
                        backgroundColor:string,
                        pointStyle:string,
                        fill:boolean,
                        borderWidth:number,
                        pointRadius:number,
                        type:string,
                    },
                    labels: {}[],
                    unit: string,
                    chartContainer: string,
                    id_sensor_type: number,
                    id_sensor:number,
                    sensor_type: string,
                    sensor_type_longname: string,
                    sensor_type_awe: string,
                }[],
                measures_found: number,
                station_found: number,
                latest_measure: string,
            }[],
            map_center?:{
                lat: number,
                lng: number,
            },
        }

    On voit bien que 'id_station: number', est un number. A quel moment il est confu avec undefined?
    Est-ce que tu a sbesoin de plus de code?

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 569
    Par défaut
    c'est la même chose avec station, cette variable peut être indéfinie à cause des points d’interrogation dans const station = getstation?.stations?.[0].
    donc même question, est ce que getstation ou stations peuvent être indéfinis ?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 146
    Par défaut
    Hello,

    c'est la même chose avec station, cette variable peut être indéfinie à cause des points d’interrogation dans const station = getstation?.stations?.[0].
    Ben j'ai aussi pensé à ça

    Petit question bête avant. Est-ce que indéfini veut dire aussi empty ou null?

    Toutes mes variables sont définies. C'est à dire qu'elles sont soit string ou soit number. Dans certain cas, elle peut être empty, soit null. Mais on est vraiment sur 1 ou 2 cas.

    'measures' peut être null ou empty, dans le cas ou l'on recherche des mesures qui ne sont pas dans le scope d'une date from et to.

    En d'autres mot, non, aucune variable est indéfinie.

    Si maintenant, je supprime le ?
    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const measures = getstation.stations.[0].measures
      const station = getstation.stations.[0]

    J'ai ce message d'erreur

    Nom : Screenshot 2025-04-30 at 22.19.22.png
Affichages : 7
Taille : 153,6 Ko
    Nom : Screenshot 2025-04-30 at 22.19.34.png
Affichages : 6
Taille : 177,6 Ko

    Je ne comprends pas pourquoi dans la deuxième image, on voir indefined et je pense que l'erreur doit venir ici, non?
    Ai-je mal préparé mon truc?

    Code typescript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    import { QueryClient, useInfiniteQuery, useQuery } from '@tanstack/react-query'
    //import type { Colors } from "@/constants/colors";
     
    const endpoint = "https://a.cccccc.ch/projet"
     
    type API = {  
      '/getstation/[id]/[from]/[to]': {
            response: number, 
            id: number,
            method: string,
            next: string | null,
            fields: {
                id_field: number,
                field_name: string,
                field_longname: string,
                field_city: string,
                field_lat: number,
                field_lng: number
            }[],
            stations: {
                id_field: number,
                field_name: string,
                id_station: number,
                station_longname: string,
                id_station_type: number,
                station_type_name: string,
                station_archive: number,
                lat: number,
                lng: number,
                alt: number,
                measures?: {
                    datasets?: {
                        data?:{
                            value: number,
                            label: string,
                            date: string,
                            dataPointText: number
                        }[],
                        label: string,
                        showLine:boolean,
                        borderColor:string,
                        backgroundColor:string,
                        pointStyle:string,
                        fill:boolean,
                        borderWidth:number,
                        pointRadius:number,
                        type:string,
                    },
                    labels: {}[],
                    unit: string,
                    chartContainer: string,
                    id_sensor_type: number,
                    id_sensor:number,
                    sensor_type: string,
                    sensor_type_longname: string,
                    sensor_type_awe: string,
                }[],
                measures_found: number,
                station_found: number,
                latest_measure: string,
            }[],
            map_center:{
                lat: number,
                lng: number,
            },
        }
    }
    (J'espère avoir mis suffisemment de code)

Discussions similaires

  1. [PowerShell] Comment retrouver le type d'une variable avec Where-Object
    Par badack dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 19/07/2010, 16h49
  2. Réponses: 7
    Dernier message: 13/03/2006, 15h39
  3. [VBA-E]Renvoyer le type d'une variable
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/02/2006, 18h07
  4. Connaitre le type d'une variable
    Par mic79 dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2006, 15h42
  5. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo