2016-11-24 3 views
3

Ma version TypeScript est 2.0.10.TypeScript + Réagir: defaultProps ne fonctionne pas pour les accessoires facultatifs en mode de vérification null strict

Le composant

import * as React from "react"; 

export interface HelloProps { list?: number[]; } 

export class Hello extends React.Component<HelloProps, {}> { 
    static defaultProps = { 
     list: [1, 2, 3] 
    } 
    static propTypes = { 
     list: React.PropTypes.array, 
     title: React.PropTypes.string 
    }; 

    render() { 
     let {list} = this.props 
     return (
      <ul> 
       { 
        // error here: Object is possibly 'undefined'. 
        list.map(item => (
         <li>{item}</li> 
        )) 
       } 
      </ul> 
     ) 
    } 
} 

Le fichier de configuration du compilateur dactylographiée

{ 
    "compilerOptions": { 
     "outDir": "./dist/", 
     "sourceMap": true, 
     "noImplicitAny": true, 
     "module": "commonjs", 
     "target": "es5", 
     "jsx": "react", 
     "strictNullChecks": true 
    }, 
    "include": [ 
     "src/**/*" 
    ] 
} 

Note que je mets à strictNullCheckstrue ici. Et la sortie de compilation:

ERROR in ./src/Hello.tsx 
(19,21): error TS2532: Object is possibly 'undefined'. 

Mais j'ai défini la valeur par défaut pour la liste. Est-ce un bug TypeScript?

Répondre

1

Ajout d'un point d'exclamation ! derrière list devrait aider:

list!.map(item => (
    <li>{item}</li> 
))