我知道当你在Typescript中声明一个变量时,你可以选择是否为变量指定一个类型.如果未指定类型,则使用默认的"any"类型.有没有办法强制所有变量都声明一个类型,即使它可能是"任何".就像在,我希望在未指定类型时出现编译器错误.这样程序员就会被强制给出所有类型,并防止变量意外地保留为"任何"的情况.
我正在使用带有角度的typescript并尝试创建自定义指令.我试图给出我所有的参数类型,但不确定传递$ element参数的对象是什么类型.是JQuery类型吗?还是一些元素类型?
在指令代码中,我想使用带有d3选择器的$元素.(即d3.select($ element))目前d3选择语句不起作用,因为$元素类型不是d3所期望的类型.(我也在使用d3的打字稿界面.)
var directiveDefinitionObject : ng.IDirective = {
restrict: 'E',
replace: false,
scope: { data: '=chartData' },
link: ($scope: ICustomScope, $element: <WHAT_TYPE?>) => {
d3.select($element); // d3.select(node)
}
};
Run Code Online (Sandbox Code Playgroud) 我的Visual Studio 2013与网络安装要领2013年我右键单击一个cs文件,并选择"网络精华 - >创建打字稿智能感知文件",这样,我得到一个打字稿d.ts文件,我可以在打字稿代码引用.我遇到了一些问题.我们说我的班级如下:
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的d.ts文件是:
declare module test {
interface MyPM{
id: number;
data: test.CustomPM;
}
}
Run Code Online (Sandbox Code Playgroud)
第一个问题是该行:
[DataContract(Name = "MyDTO")]
Run Code Online (Sandbox Code Playgroud)
在生成过程中被忽略了.它不会生成一个名为MyDTO的类,而是一个名为MyPM的类,即使MyDTO是指定在序列化期间使用的字符串,也就是通过线路连接到客户端的字符串.我做了一些调查和代码:
表示它使用CodeClass.Name属性来确定类名.有没有办法在类上使用属性(除了DataContract Name之外),以使CodeClass.Name属性包含除实际类名之外的另一个字符串?
第二个问题是这一行:
data: test.CustomPM;
Run Code Online (Sandbox Code Playgroud)
在Visual Studio 2013年安装了打字稿,test.CustomPM给我一个错误,因为它无法找到测试模块的类型CustomPM,即使类已经生成到同一个"测试"模块可供使用.缺少的部分是d.ts文件顶部的这一行:
/// <reference path="./CustomPM.cs.d.ts"/>
Run Code Online (Sandbox Code Playgroud)
但是,我一直无法找到让生成器生成此方法的方法.
我真的很感激任何人都可以解决这些问题的解决方法.谢谢!