小编Jan*_*sky的帖子

TypeScript 能否验证 .js 文件与其自己的 .d.ts 声明一致?

是否可以让 TypeScript 编译器检查 JavaScript 文件foo.js与其自己的声明文件是否一致foo.d.ts

我们有一段 JavaScript 代码,出于各种原因,我们希望将其保留在 JavaScript 中。不过,如果可能的话,我们希望使用 TypeScript 来实现两个目标:1) 确认我们自己的 JavaScript 代码是类型安全的,以及 2) 向有兴趣使用 TypeScript 的客户提供声明。

对于给定的 JavaScript 文件foo.js,我们可以创建相应的文件foo.d.ts来满足目标 #2(支持 TypeScript 客户)。但据我们所知, 的存在foo.d.ts不会导致对 的任何检查foo.js。也就是说,声明文件只对 的外部使用者感兴趣foo.js,编译器不会验证 JavaScript 代码是否与其自己的 .d.ts 声明一致。

我们已经尝试在 中使用 jsDoc 类型注释foo.js,并且 TypeScript 编译器确实验证了该文件中的代码与那些声明的类型一致。这似乎满足目标#1(检查我们自己的代码)。

然而,jsDoc 注释并不像 .d.ts 声明文件中可能的完整 TypeScript 语法那么强大(例如,jsDoc 对泛型的支持是基本的),这限制了我们可以使用它们的地方。此外,TypeScript 编译器似乎没有提供任何验证以确保 jsDoc 注释与 .d.ts 声明一致。我们冒着这两种类型信息来源不一致的风险。

我们正在寻找有关在这样的 JavaScript 项目的上下文中利用 TypeScript 类型检查的最佳方法的指南。

typescript

6
推荐指数
1
解决办法
326
查看次数

Safari img元素不会使用blob URL将从服务(例如,Dropbox)检索的图像渲染为ArrayBuffer

Dropbox等服务可以下载图像,以各种形式返回文件的数据,包括作为ArrayBuffer.在Webkit中,可以创建一个blob:URL,它引用下载的数据,然后将其设置为img元素的src属性.

示例:http://jsfiddle.net/Jan_Miksovsky/yy7Zs/将图像的数据作为ArrayBuffer检索,然后创建一个blob:URL并将其交给img元素.此示例适用于Chrome,但不适用于Safari 6.0.2.

根据我可以使用(http://caniuse.com/#feat=bloburls)和其他来源,Safari 6.x支持创建blob对象URL.Safari确实支持通过前缀全局webkitURL使用createObjectURL.但是,如果生成的blob URL传递给img元素的src,则不会呈现图像.

在Safari中是否有其他方式来渲染以这种方式检索的图像?

javascript safari dropbox

5
推荐指数
1
解决办法
1778
查看次数

是否可以约束jsDoc @template声明中定义的泛型类型?

我们想使用jsDoc注释而不是.ts文件在常规.js文件中定义mixin类.

mixin类的一个重要方面是将泛型类型参数约束为类构造函数extends.例如,上面的页面包含以下TypeScript:

type Constructor<T> = new(...args: any[]) => T;
function Tagged<T extends Constructor<{}>>(Base: T) { ... }
Run Code Online (Sandbox Code Playgroud)

TypeScript的jsDoc支持允许@template T声明,但是我们没有看到任何方法来约束T,例如,是一个类构造函数.有办法做到这一点吗?

我们愿意创建/使用.d.ts文件来支持这一点,只要mixin声明本身可以存在于.js文件中,并且checkJs将适当地键入 - 检查该.js文件的工作方式.

generics mixins typescript

5
推荐指数
1
解决办法
745
查看次数

聚合物元素用getter/setter声明可绑定属性的最简单方法是什么?

使用聚合物元素的attributes属性或publish块,可以非常轻松地创建自动管理其基础存储的属性.但是,通常会出现不仅仅存储和检索财产价值的情况.例如,属性的值可能取决于其他元素状态.另一个例子:一个可绑定但只读的属性.

在这种情况下,能够使用getter/setter对定义属性是很好的.但是,目前尚不清楚如何将结果属性声明为可绑定.如果属性名称包含在attributes或中publish,则不会使用getter/setter.如果声明属性名称,则它似乎不可绑定.并且attributes/ publish只支持onChanged处理程序的默认属性行为; 没有办法拒绝尝试设置属性(例如,在setter中),也没有办法在检索值时运行getter.

我假设这里的任何解决方案都需要放弃Polymer的声明性语法并从头开始构建.我开了一枪:http://jsbin.com/qejaf/2/edit.这是有效的,但我想知道是否有更简单的方法来做到这一点.例如,是否可以定义一个getter/setter(或只是getter)通过一个publish块公开它?

(旁白:在这个例子中有一点我希望能够引用一个命名的元素构造函数,但它似乎在期间不可用ready.)

polymer

4
推荐指数
1
解决办法
1919
查看次数

如何声明性地将伪布尔属性(如disabled/checked)绑定到布尔值?

是否有绑定属性像一个简单的方法disabledchecked真/假的性质?就像是

<button disabled="{{myBooleanProperty}}">Ok</button>

不能按预期工作.如果myBooleanProperty是假的,这台disabled="false",这是真实的,只要HTML关注.

是否有一个过滤器表达式可以提示绑定解析器,如果值为false,则应该完全删除该属性?

polymer

3
推荐指数
1
解决办法
1593
查看次数

标签 统计

polymer ×2

typescript ×2

dropbox ×1

generics ×1

javascript ×1

mixins ×1

safari ×1