2016-06-07 5 views
6

dattiloscritto mi stava dando un errore di compilazione che non sapevo come risolvere il problema quando si cerca di utilizzare un componente ho definito Reagire:Come importare una libreria esterna e trasmetterla a <any> in Typescript?

import App = require('./components/views/app/app'); 

Tale errore è andato via quando ho usato il modulo di importazione come <any>:

import App = require('./components/views/app/app'); 
const App2 = App as any; 

C'è un modo per farlo in una riga, in questo modo?

import App = require('./components/views/app/app') as <any>; 

Sarebbe un ottimo modo per importare JavaScript file troppo, senza dover fare questo:

declare module 'react-router' { 
    const x: any; 
    export = x; 
} 
+0

@Blackus risposta è la strada da percorrere ma attenzione, in fase di lancio a 'any', è ** ** opt-out di battitura (e allora qual è il punto di usare tipografico?) –

+0

@BrunoGrieder Sure , se le tipizzazioni sono disponibili per la lib, meglio usarla! – Blackus

+0

Assolutamente. Ma un sacco di volte mi imbatto in errori di sintassi che non riesco a correggere, dove non ci sono tipizzazioni pubbliche (come react-css-modules). Allora hai bisogno di . E.g: http://stackoverflow.com/questions/37675920/jsx-element-type-does-not-have-any-construct-or-call-signatures – Richard

risposta

7

Per i componenti che avete definito, dipende da come li si esporta, ma si possibile utilizzare la dichiarazione import.

Ad esempio, il componente esportato

export class FooComponent extends React.Component<any, any> { 
} 

e l'importazione

import {FooComponent} from './foo-component.ts'; 

Per la domanda sul titolo "Come importare libreria esterna e gettato a qualsiasi", è possibile semplicemente require su una variabile.

const myLib: any = require('myLib'); 
Problemi correlati