none
“标示符重复”?TypeScript? RRS feed

  • 问题

  • 由于没有弄清楚究竟如何定义头文件,我编写了一个ts测试,ts代码如下(file1.ts):

    module A {
        export class MyClass {
            Add(n1: number, n2: number):number
            {
                return n1 + n2;
            }
            SelfFun(n1:number,n2:number,fun: { (a1: number, a2: number): number }):number
            {
                return fun(n1, n2);
            }
        }
    }

    使用tsc.exe生成了对应的file1.d.ts:

    declare module A {
         class MyClass {
            public Add(n1: number, n2: number): number;
            public SelfFun(n1: number, n2: number, fun: (a1: number, a2: number) => number): number;
        }
    }

    目前目录结构如下:

    结果发生标题的错误,如何处理以及为何会发生此错误?谢谢各位。


    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2014年3月8日 12:34

答案

  • 非常感谢你的帮助,不过你的帮助貌似只能单独用于export单独的函数。

    不过我仔细研究了头文件写法,自己尝试了若干天,勉强总结了经验,写法如下(到时候整理发微博):

    1)定义接口。

    2)定义公共变量(必须在js中定义)。

    3)引用头文件。

    4)同时引用头文件和实现头文件的js文件(TS可以删除)到页面中,完整代码如下:

    【MyClass.js】:

    var MyModule; (function (MyModule) {     var MyClass = (function () {         function MyClass() {             this.msg = null;         }         MyClass.prototype.Calling = function () {             alert(this.msg);         };         return MyClass;     })();     MyModule.MyClass = MyClass; })(MyModule || (MyModule = {})); var $ = new MyModule.MyClass(); var MyClass = $;

    【Main.d.ts】:

    /**
    *定义公开变量的全部公开属性以及方法
    */
    interface IMyClass {
        msg: string;
        Calling(): void;
    }
    /*
    *该变量必须在某个js中存在
    */
    declare var $: IMyClass;

    【另外一个ts】

    /// <reference path="../HeaderFiles/Main.d.ts" />
    $.msg = "你好,这是头文件调用";
    $.Calling();

    【Html】

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script src="Scripts/JsFiles/MyClass.js"></script>
        <script src="Scripts/TsFiles/file1.js"></script>
    </head>
    <body>
        Hello world!
    </body>
    </html>

    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download


    2014年3月12日 5:53

全部回复

  • >>TypeScript compiles to clean, readable, standards-based JavaScript. Try it out at http://www.typescriptlang.org/playground.  

    我认为你需要移除在headerfiles路径下的file1.d.ts文件:Duplicate Identifier in WinJs.d.ts

    你能参考这些链接:

    Using TypeScript in Visual Studio 2012 :http://www.codeguru.com/csharp/.net/using-typescript-in-visual-studio-2012.html

    TypeScript for ActionScript Developers:http://jessewarden.com/2012/10/typescript-for-actionscript-developers.html

    希望可以帮到你。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. &lt;br/&gt; Click &lt;a href=&quot;http://support.microsoft.com/common/survey.aspx?showpage=1&amp;scid=sw%3Ben%3B3559&amp;theme=tech&quot;&gt; HERE&lt;/a&gt; to participate the survey.

    2014年3月10日 6:49
    版主
  • 谢谢,现在我就是想知道头文件为什么无法正常使用。是和位置什么相关还是?因为jQuery都有头文件定义的,我想学习一下到底头文件如何定义以及存放位置关系。

    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2014年3月10日 7:53
  •  

          怎么使用头文件的,首先你必须确保你引用的headerfiles路径下的file1.d.ts文件路径正确, 例如

    /// <reference path="Scripts/headerfiles/file1.d.ts" />
    import file1= require("A");

          看下面这些相似的帖子:

    How to define a HeaderFile for TypeScript

    In javascript, using requireJS, how do I “require” a typescript object

    Typescript can't find modules


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. &lt;br/&gt; Click &lt;a href=&quot;http://support.microsoft.com/common/survey.aspx?showpage=1&amp;scid=sw%3Ben%3B3559&amp;theme=tech&quot;&gt; HERE&lt;/a&gt; to participate the survey.

    2014年3月11日 3:02
    版主
  • 非常感谢你的帮助,不过你的帮助貌似只能单独用于export单独的函数。

    不过我仔细研究了头文件写法,自己尝试了若干天,勉强总结了经验,写法如下(到时候整理发微博):

    1)定义接口。

    2)定义公共变量(必须在js中定义)。

    3)引用头文件。

    4)同时引用头文件和实现头文件的js文件(TS可以删除)到页面中,完整代码如下:

    【MyClass.js】:

    var MyModule; (function (MyModule) {     var MyClass = (function () {         function MyClass() {             this.msg = null;         }         MyClass.prototype.Calling = function () {             alert(this.msg);         };         return MyClass;     })();     MyModule.MyClass = MyClass; })(MyModule || (MyModule = {})); var $ = new MyModule.MyClass(); var MyClass = $;

    【Main.d.ts】:

    /**
    *定义公开变量的全部公开属性以及方法
    */
    interface IMyClass {
        msg: string;
        Calling(): void;
    }
    /*
    *该变量必须在某个js中存在
    */
    declare var $: IMyClass;

    【另外一个ts】

    /// <reference path="../HeaderFiles/Main.d.ts" />
    $.msg = "你好,这是头文件调用";
    $.Calling();

    【Html】

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script src="Scripts/JsFiles/MyClass.js"></script>
        <script src="Scripts/TsFiles/file1.js"></script>
    </head>
    <body>
        Hello world!
    </body>
    </html>

    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download


    2014年3月12日 5:53