La propriété n'existe pas sur le type " DetailedHTMLProps, HTMLDivElement>' à Réagir 16

Depuis Réagir 16 permet maintenant de personnalisé des attributs DOM, j'ai essayé de tirer profit de mon Tapuscrit code:

import * as React from 'react';

<div className="page" size="A4">
</div>

mais recevoir ce message d'erreur:

erreur TS2339: la Propriété "taille" n'existe pas sur le type de
'DetailedHTMLProps< HTMLAttributes< HTMLDivElement>, HTMLDivElement>'.

Ce fil suggère de faire un module augmentation, j'ai donc essayé de cette façon:

import * as React from 'react';

declare module 'react' {
     interface HTMLProps<T> {
        size?:string;
    }    
}

Même message d'erreur.

Enfin, j'ai aussi essayé de déclarer page comme une nouvelle balise HTML:

declare global {
  namespace JSX {
    interface IntrinsicElements {
      page: any
    }
  }
}

<page className="page" size="A4">
</page>

Il se débarrasse de la message d'erreur, mais le size attribut est complètement ignoré dans le code compilé, et je me retrouve avec:

<page className="page">
</page>

Idéalement, la dernière est ma solution préférée. Je voudrais utiliser le size attribut personnalisé aux côtés de la page balise personnalisée.

tsconfig.js

{
  "compilerOptions": {
    "outDir": "build/dist",
    "module": "esnext",
    "target": "es5",
    "lib": ["es6", "dom"],
    "sourceMap": true,
    "allowJs": true,
    "jsx": "react",
    "moduleResolution": "node",
    "rootDir": "src",
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "suppressImplicitAnyIndexErrors": true,
    "allowSyntheticDefaultImports": true,
    "noUnusedLocals": false,
    "noUnusedParameters": false,
    "allowUnusedLabels": true,
    "allowUnreachableCode": true
  }
}
Je ne sais pas beaucoup sur la Machine, mais pour une idée -peut-être stupide, de faire l'essai data-size?
Wow... Il s'est débarrassé de mon erreur, et compilé! Ce qui fait que vous pensez de ceci et pourquoi cela fonctionne, par opposition à un "non dash" nom comme la taille? Pourriez-vous écrire que comme une réponse afin que je puisse valider?

OriginalL'auteur Greg Forel | 2017-09-14