Non riesco a ottenere alcuna importazione per funzionare quando il modulo non è definito come una stringa. Cosa sta succedendo?Utilizzo di un backbone.d.ts
test.ts
import b = module('Backbone')
non funziona: backbone.d.ts
declare module Backbone {
export class Events {
...
Opere: backbone.d.ts
declare module "Backbone" {
export class Events {
...
Modifica 1:
FYI Da 10.1.4
Un AmbientModuleIdentification con un letterale stringa dichiara un modulo esterno. Questo tipo di dichiarazione è consentita solo nel modulo globale. Lo StringLiteral deve specificare un nome di modulo esterno di livello superiore. i nomi di modulo esterni relativi non sono consentiti
Non capisco come sia utile non specificarlo come formato letterale stringa come trovato here e here. Funziona se si utilizza ///<reference...
senza un modulo letterale stringa ma sto provando a generare moduli AMD che dipendono da queste librerie, quindi ho bisogno che l'importazione funzioni. Sono la minoranza e devo andare a modificare ogni .d.ts come versione letterale della stringa?
Edit 2:
Dichiarazione di un modulo usando una stringa letterale richiede che l'importazione sia una corrispondenza esatta, se quella stringa letterale. Non è più possibile utilizzare percorsi relativi o assoluti alla posizione di questa definizione modulo/modulo anche se non si trova nella stessa directory del file che tenta di importarlo. Ciò rende necessario un numero ///<reference
e un'importazione, ma produce un modulo con tsc --module AMD
che era esattamente alla ricerca (il percorso del modulo è come dettato dal letterale stringa di modulo "Backbone"
).
Ad esempio.
+- dep/
|- backbone.d.ts
|- test.ts
backbone.d.ts:
declare module "Backbone" {
export class Events {
Opere: test.ts:
///<reference path="../dep/backbone.d.ts" />
import b = module('Backbone')
// generates
// define(["require", "exports", 'Backbone']
non funziona: prova.ts:
import b = module('./dep/Backbone')
Nota che questo funziona così ...
declare module "libs/Backbone" {
...
///<reference path="dep/backbone.d.ts" />
import b = module('libs/Backbone')
...
// generates
define(["require", "exports", 'libs/Backbone']
Sono davvero curioso di avere una buona spiegazione anche per quello. Ho archiviato un [problema] (http://typescript.codeplex.com/workitem/231) in codeplex alcune settimane fa su un argomento simile. Il problema è stato chiuso e il commento dice che ha qualcosa a che fare con la differenza tra i moduli interni ed esterni e che sperano di migliorare la loro documentazione al più presto ... – Valentin
Potresti voler vedere i miei risultati 2 – ryan
Interessante. Sono ancora curioso di sapere perché molte dichiarazioni non usano il formato stringa letterale. – Valentin