如何在Typescript中编写文字Javascript
How to write literal Javascript in Typescript
我需要向HTMLElement
添加一个成员,换句话说,我需要将数据存储到一个元素中。这就是我想要实现的,就好像我在ScriptSharp中编码一样。
/** My method */
public DoIt(element: Element, obj: Object) {
Literal("{0}.extended = {1}", element, obj); // This is not standard Typescript!
}
在我的示例中ScriptSharp(一个将C#代码转换为Javascript的项目(提供了一个Script.Literal
对象,允许开发人员在无法实现C#抽象时编写纯Javascript。
因此Javascript输出为:
// Probably Typescript will render it a bit differently, but basically
// this is what we get in the end...
var _doit = function(element, obj) {
element.extended = obj;
};
如何在Typescript中实现这一点?或者也许我应该用不同的方式来处理这个问题?
任何有效的JavaScript也是有效的TypeScript。这意味着您可以在代码中的任何位置编写文字JS。
var _doit = function(element, obj) {
element.extended = obj;
};
这是有效的JS和TS。
但是,由于您使用TypeScript,您可能还希望在代码中使用静态类型。如果你只是在代码中添加类型,它会正确编译,但你会得到一个语义错误:
var _doit = function(element:HTMLElement, obj) {
element.extended = obj; // error: HTMLElement doesn't have property 'extended'
};
为了防止此错误,您可以通知编译器您打算在HTMLElement
:上创建一个新属性
interface HTMLElement {
extended?: any;
}
现在编译器知道HTMLElement
上有一个(可选(属性extended
,并且编译时不会出错。您还将获得此属性上的代码自动完成(如果提供了JSDoc(。
这对我有效:
class Foo {
public DoIt(element: Element, obj: Object) {
var anyElement: any = element;
anyElement.extended = obj;
}
}
问题(正如您可能注意到的(是Element没有声明扩展名称的属性,所以TypeScript完成了它的工作并强制执行Element类型。如果您想解决此问题,可以使用any
类型来执行此操作。
或者也许我应该用不同的方式来处理这个问题?
如果你想完全脱离编译器检查,只需要一个标准的javascript
文件。请注意,如果您想使用typescript中的,则必须告诉typescript(使用ambient declarations
(。
个人建议:只需使用TypeScript。
- 对象文字方法上的Javascript绑定不起作用
- 可以使用“;创建“;作为JavaScript对象文字中的属性名称
- 如何避免“;使用数组文字表示法“;以下javascript代码中的jslint错误
- Javascript对象文字,POST问题
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 向JavaScript对象文字添加数据
- 如何检查文字对象是否在 Javascript 数组中
- JavaScript 对象 - 未定义的数字键文字
- Javascript对象文字,如何使用“this”来引用对象中的变量
- JavaScript 中数据库数据的未终止字符串文字
- Javascript 函数文字
- 如何将xml文件转换为javascript中的对象文字
- 混合了文字和数组的Javascript数组
- 在JavaScript源代码中使用UTF-8字符文字是否安全
- Javascript将字符串中的对象转换为对象文字
- 错误:“标识符在数字文字 javascript 之后立即启动”
- 未终止的字符串文字 - Javascript
- 序数在文字javascript
- 将对象文字javascript转换为通用语言c#
- 如何在Typescript中编写文字Javascript