使用J库与AMD模块项目而不是commonJS

时间:2014-11-24 18:16:47

标签: typescript

我能够在Nodejs应用程序https://github.com/SheetJS/j中使用此库,但我似乎无法在需要使用amd模块的新项目中使用它。

使用commonjs我能够做到:

///<reference path="../../node_modules/j/misc/j.d.ts"/>
var Excel = <J>require('J');

我正在尝试AMD的最新尝试:

/// <amd-dependency path = "../../j/j" /> (the Library is in a different spot in this project)
private run(){
    var Excel = require('../../j/j');
    var array = Excel.readFile("D:\\file.xls");
}

错误TS2095:找不到符号&#39;要求&#39;。 这是基于观察这个我认为这个J库知道出口但我可能是错的? https://www.youtube.com/watch?v=4AGQpv0MKsA

编辑:

///<reference path='misc/cfb.d.ts'/>

interface Cell {
    v;
    w;
    t: string;
    f: string;
    ixfe: number;
}

interface CellAddress {
    c: number;
    r: number;
}

interface CellRange {
    s: CellAddress;
    e: CellAddress;
}


interface Worksheet {
    [key: string]: Cell;
}

interface Worksheets {
    [key: string]: Worksheet;
}

interface Workbook {
    SheetNames: string[];
    Sheets: Worksheets;
}

interface J {
    parse_xlscfb(cfb:CFBContainer): Workbook;
    read;
    readFile(filename:string): any;
    utils: {
        encode_col(col:number): string;
        encode_row(row:number): string;
        encode_cell(cell:CellAddress): string;
        encode_range;
        decode_col(col:string): number;
        decode_row(row:string): number;
        split_cell(cell:string): string[];
        decode_cell(cell:string): CellAddress;
        decode_range(cell:string): CellRange;
        sheet_to_csv(worksheet:Worksheet): string;
        get_formulae(worksheet:Worksheet): string[];
        make_csv(worksheet:Worksheet): string;
        sheet_to_row_object_array(worksheet:Worksheet): Object[];
    };
    verbose: Number;
    CFB: CFB;
    main;
}

编辑试过的答案: 尝试将模块添加到d.ts文件的顶部

///<reference path='misc/cfb.d.ts'/>

declare module 'J'{
    var j: J;
    export = j;
}

1 个答案:

答案 0 :(得分:1)

你从哪里获得j.d.ts?您应该将其更新为包括:

declare module 'J'{
    var j:J;
    export = j; 
}

然后你可以这样做:

import Excel = require('J');

注意 import 而不是 var 。这样,您可以使用--module commonjs进行节点编译,使用--module amd编译for requirejs。

更多:https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1