使用Web Essentials 2013生成typescript intellisense文件无效
我已将visual studio 2013与web essentials 2013一起安装。我右键单击一个.cs文件并选择“Web Essentials->创建Typescript intellisense文件”,这样我就得到了一个Typescript d.ts文件,我可以在Typescript代码中引用它。我在这方面遇到了一些问题。假设我的课程如下:使用Web Essentials 2013生成typescript intellisense文件无效,web,visual-studio-2013,typescript,web-essentials,Web,Visual Studio 2013,Typescript,Web Essentials,我已将visual studio 2013与web essentials 2013一起安装。我右键单击一个.cs文件并选择“Web Essentials->创建Typescript intellisense文件”,这样我就得到了一个Typescript d.ts文件,我可以在Typescript代码中引用它。我在这方面遇到了一些问题。假设我的课程如下: namespace SomeNamespace { [TypescriptModule("test")] [DataContr
namespace SomeNamespace
{
[TypescriptModule("test")]
[DataContract(Name = "MyDTO")]
public partial class MyPM
{
[DataMember(Name = "id")]
public long Id { get; set; }
[Required]
[DataMember(Name = "name")]
public CustomPM Data{ get; set; }
}
}
我得到的d.ts文件是:
declare module test {
interface MyPM{
id: number;
data: test.CustomPM;
}
}
第一个问题是线路:
[DataContract(Name = "MyDTO")]
在生成过程中被忽略。它不是生成一个名为MyDTO的类,而是一个名为MyPM的类,尽管MyDTO是指定在序列化过程中使用的字符串,这是通过连接到客户端的内容。我在这里做了一些调查和代码:
指示它使用CodeClass.Name属性来确定类名。是否有方法使用类的属性(DataContract名称以外的内容)使CodeClass.Name属性包含实际类名之外的另一个字符串
第二个问题是这一行:
data: test.CustomPM;
在安装了typescript的visual studio 2013中,test.CustomPM会给我一个错误,因为它无法在测试模块中找到CustomPM类型,即使该类已生成到同一个“测试”模块中并可供使用。缺少的部分是d.ts文件顶部的这一行:
/// <reference path="./CustomPM.cs.d.ts"/>
//
然而,我一直无法找到一种方法让生成器也生成这个
我真的很感激任何人都能提供一些解决这些问题的方法。谢谢 这是一个老问题,我不会直接回答,因为我不知道WebEssentials的这种功能 但我会给你一个非常有效的替代方案: TypeLite- 您只需将attribute
[TsClass]
放在所需的类上
如果您想让TS接口以I
和camelCase的所有属性开头,请编辑TypeLite.Net4.tt:
您可以在基本
tsconfig.json
中引用生成的类型,这样就不需要在每个typescript文件中都使用自定义引用:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"jsx": "preserve"
},
"files": [
"../typings/index.d.ts",
"./TestForm.tsx",
"./declaration.d.ts",
"../models/models.cs.d.ts"
]
}
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"jsx": "preserve"
},
"files": [
"../typings/index.d.ts",
"./TestForm.tsx",
"./declaration.d.ts",
"../models/models.cs.d.ts"
]
}