.net .cshtml文件中的TypeScript
我正在使用ASP.NET-MVC框架启动一个新项目。我想在这个项目中使用TypeScript来代替JavaScript。VisualStudio很容易支持TypeScript,但它似乎与.cshtml razor文件(完全)不兼容。我能够在.ts文件中创建我的类,并在.cshtml文件中调用这些类,问题是当我将参数传递给.cshtml文件中的对象时,TypeSafety被忽略,并且函数运行时就好像从未定义过类型一样 .ts文件.net .cshtml文件中的TypeScript,.net,asp.net-mvc,visual-studio,razor,typescript,.net,Asp.net Mvc,Visual Studio,Razor,Typescript,我正在使用ASP.NET-MVC框架启动一个新项目。我想在这个项目中使用TypeScript来代替JavaScript。VisualStudio很容易支持TypeScript,但它似乎与.cshtml razor文件(完全)不兼容。我能够在.ts文件中创建我的类,并在.cshtml文件中调用这些类,问题是当我将参数传递给.cshtml文件中的对象时,TypeSafety被忽略,并且函数运行时就好像从未定义过类型一样 .ts文件 export class SomeClass {
export class SomeClass {
name: number;
constructor(public tName: number) {
this.name = tName;
}
public sayName() {
alert(this.name);
}
}
var instance = new SomeClass("Timmy");
instance.sayName();
.cshtml文件
export class SomeClass {
name: number;
constructor(public tName: number) {
this.name = tName;
}
public sayName() {
alert(this.name);
}
}
var instance = new SomeClass("Timmy");
instance.sayName();
正如您所看到的,我正在向构造函数传递一个字符串,尽管我清楚地定义了仅接受数字的参数,但是typesafe被忽略,TypeScript/JavaScript的执行就好像没有问题一样
这两种文件类型都是由微软发明的,所以我有点惊讶于它们之间的友好程度。这还不是世界末日,至少我仍然能够使用面向对象编程,我只是好奇是否有其他人经历过这种情况,也许可以给我一个简短的解释 TypeScript transpiler仅检查和传输仅包含以下内容的文件:
- Javascript
- 通过TypeScript(静态类型、泛型类等)添加一些语法性糖代码的Javascript
script
(Javascript)或style
(CSS)标记来引用该文件
不建议将Javascript代码直接放入视图中(CSHTML或仅HTML),因为它违反了以下原则:
将功能(“行为层”)与网页的结构/内容和表示分离(来源Wikipedia)
一些ASP.NETMVC开发人员仍然继续将Javascript代码直接放到Razor视图中,因为他们需要将视图模型中的一些数据直接传递给Javascript代码。当Javascript代码已经在视图中时,可以轻松地传递数据,而不会出现任何复杂情况。但我已经说过这不好;-)
这种打破不引人注目的JavaScript原则的事情是可以避免的。所有需要JavaScript代码读取的数据都应该通过在HTML元素中使用数据属性来存储,例如
<span id="mySpan" data-t-name="123456">Hello World</span>
然后,将TypeScript生成的js文件引用到CSHTML中
希望有帮助。我想tsc会用
.ts
扩展名编译(传输)代码。我错了吗?如果您仍然希望在html文件中使用内联typescript(vue.js提倡类似的做法),请参阅本期github中的讨论,了解选项: