Import af TypeScript eksterne moduler ved hjælp af aliaser leveret gennem requirejs.config
Her er min mappestruktur:
app
app1
- kerne.ts
- app1
- core.ts
app2
- util.ts
pakker
funktioner
funktion1
- index.ts
- funktion1
- index.ts
- funktioner
- funktion1
- index.ts
sælger
- requirejs (fra https://requirejs.org)
index.html
<!DOCTYPE html>
<html>
<head>
<title>Test RequireJS with TypeScript</title>
<script src="vendor/requirejs/require.js" data-main="app/main"></script>
</head>
<body>
</body>
Bemærk i paths, jeg har også tilføjet et alias for feature1.
main.ts
'use strict';
require.config({
paths: {
app1: 'app1',
app2: 'app2',
feature1: 'packages/features/feature1'
},
deps: ['app']
});
core.ts (app1)
class Core {
name = 'Core';
}
export = Core;
util.ts (app2)
class Util {
name = 'Util';
}
export = Util;
index.ts (feature1)
class Util {
name = 'Util';
}
export = Util;
Fra app.ts ønsker jeg at referere til core.ts, util.ts og feature1's index.ts filer. Dette er, hvordan jeg forsøgte først, og det fungerede perfekt:
/// <amd-dependency path="feature1/index" name="Feature" />
declare var Feature: any;
import Core = require('app1/core');
import MyUtil = require('app2/util/myutil');
var c = new Core();
console.log(c.name);
var util = new MyUtil();
console.log(util.name);
var f = new Feature();
console.log(f.name);
Så prøvede jeg at gøre følgende, men fejlede. Det ser ud til, at require() kun forstår relative stier, og det forstår ikke de aliaser, der er angivet gennem require.config(...):
import Core = require('app1/core');
import MyUtil = require('app2/util/myutil');
import Feature = require('feature1/index'); // ERROR!: Cannot find module `feature1/index`
var c = new Core();
console.log(c.name);
var util = new MyUtil();
console.log(util.name);
var f = new Feature();
console.log(f.name);
Er min forståelse korrekt? Er der nogen bedste praksis for at henvise til andre eksterne moduler?
Svar #1
I din kode :
import Feature = require('feature1/index'); // ERROR!: Cannot find module `feature1/index`
Dette er en compiler-fejl (requirejs er tilfreds med det). TypeScript forstår ikke requirejs.config på nuværende tidspunkt, så du skal bruge fulde relative stier.
PS: Dette vil dog blive løst snart, se https://github.com/Microsoft/TypeScript/issues/5039 for detaljer.
