truescript pagina oficial mac example create node.js typescript requirejs

node.js - pagina - No se puede usar requireJS y Node''s Require en el mismo proyecto de TypeScript



typescript oficial (2)

Al final, lo que necesitaba era la capacidad de require() contenido JS compilado sobre la marcha por el servidor, lo que no parece funcionar con el paquete web .

Para suprimir los errores del compilador de mecanografía en la pregunta original, comenté esta línea desde require.d.ts (el archivo de declaración RequireJS):

declare var require: Require;

y utilicé el truco {foo:bar}[''f''+''oo''] para hacer que tsc ''olvide'' el tipo de variable de require ambiente cuando se lo asigna a la variable requirejs tipeada, así:

var requirejs:Require; // requirejs if(typeof module !== ''undefined'' && module.exports){ // We''re in a Node process requirejs = require(''requirejs''); }else{ // We''re in an AMD module in the browser: requirejs = {require:require}[''req''+''ire'']; } // use requirejs for dynamic require statements requirejs(gather_requirements(),do_things);

Tengo un proyecto mecanografiado dirigido tanto a Node como al navegador. Estoy usando Node''s require() en algunos scripts y necesito el require() jS en otros. Mi directorio de proyecto se ve así:

myProject /-- a.ts /-- b.ts /-- node.d.ts /-- require.d.ts

donde a.ts contiene:

/// <reference path="./node.d.ts" /> var cp = require(''child-process''); var a = ''hello world'' export = a

y b.ts contiene:

/// <reference path="./require.d.ts" /> require(''hello'',function(x){console.log(''world'')}); var b = ''hello world'' export = b

y donde node.d.ts y node.d.ts se obtienen de DefinitlyTyped .

Cuando compilo mi proyecto, obtengo estos errores:

b.ts(2,1): error TS2346: Supplied parameters do not match any signature of call target. require.d.ts(396,13): error TS2403: Subsequent variable declarations must have the same type. Variable ''require'' must be of type ''NodeRequire'', but here has type ''Require''.

Utilizo este idioma para determinar qué módulos cargar, por lo que no estoy cargando un módulo de nodo en el navegador o viceversa.

if(typeof module !== ''undefined'' && module.exports){ // We''re in a Node process }else{ // We''re in an AMD module in the browser: }

¿Hay alguna forma de utilizar ambos archivos .d.ts en el mismo proyecto? Parece que usarlos en módulos separados no es suficiente.


¿Hay alguna forma de utilizar estos dos archivos .d.ts en el mismo proyecto?

Recomiendo ir con commonjs todas partes. Eso es lo que la comunidad React ha encabezado y es un flujo de trabajo mucho más simple. Simplemente use CommonJS + webpack (para obtener lazy require.ensure desde aquí ). 🌹

También hay un inicio rápido para TypeScript en el entorno del navegador .