将MVC模型数据传递给客户端TypeScript代码

Che*_*hiz 11 javascript asp.net-mvc model razor typescript

使用MVC时,我有时会将服务器的模型数据传递给客户端JavaScript,使用注入JavaScript的Razor,如下所示:

<script type="text/javascript">
    var myClientGuid = '@Model.MyServerGuid';
</script>
Run Code Online (Sandbox Code Playgroud)

这将JavaScript变量设置为myClientGuid服务器端模型属性的值MyServerGuid.当它到达客户端时,代码在浏览器中看起来像这样:

<script type="text/javascript">
    var myClientGuid = 'EF0077AB-0482-4D91-90A7-75285F01CA6F';
</script>
Run Code Online (Sandbox Code Playgroud)

这允许外部JavaScript文件使用此变量.

我的问题是,在TypeScript中,由于 所有代码都必须通过外部文件引用,将服务器端字段传递给TypeScript代码的最佳方法是什么?外部代码文件不能包含Razor代码.我应该使用与上面相同的技术,在View中,在项目中混合使用JavaScript和Typescript吗?

小智 17

TypeScript编译器只需知道您的服务器端字段存在.最简单的方法是使用环境声明(参见规范第10节).例如,如果您有一个需要使用myClientGuid的.ts文件,那么您可以这样做

declare var myClientGuid: string;
Run Code Online (Sandbox Code Playgroud)

在主.ts文件的顶部.编译器不会为此var声明生成代码,因此您不会破坏任何内容.现在,任何引用该.ts文件的文件都会知道全局范围内有myClientGuid字符串.