在TypeScript中,我可以将函数的参数声明为Function类型.是否存在一种"类型安全"的方式来解决这个问题?例如,考虑一下:
class Foo {
save(callback: Function) : void {
//Do the save
var result : number = 42; //We get a number from the save operation
//Can I at compile-time ensure the callback accepts a single parameter of type number somehow?
callback(result);
}
}
var foo = new Foo();
var callback = (result: string) : void => {
alert(result);
}
foo.save(callback);
Run Code Online (Sandbox Code Playgroud)
保存回调不是类型安全的,我给它一个回调函数,其中函数的参数是一个字符串,但我传递一个数字,并编译没有错误.我可以在保存类型安全功能时创建结果参数吗?
TL; DR版本:在TypeScript中是否有等效的.NET委托?
我刚刚从Angular 2 beta16升级到beta17,后者又需要rxjs 5.0.0-beta.6.(更改日志:https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28)在beta16中,所有关于Observable/map功能的都很好.升级后出现以下错误,当typescript尝试转换时出现:
- 类型'Observable'上不存在属性'map'(我在地图中使用了带有observable的地图)
- c:/path/node_modules/rxjs/add/operator/map.d.ts(216):error TS2435:Ambient模块不能嵌套在其他模块或名称空间中.
- c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16):错误TS2436:环境模块声明无法指定相对模块名称.
我已经看到了这个问题/答案,但它没有解决问题: Angular2 beta.12和RxJs 5 beta.3的可观察错误
我的appBoot.ts看起来像这样(我已经引用了rxjs/map):
///<reference path="./../node_modules/angular2/typings/browser.d.ts"/>
import {bootstrap} from "angular2/platform/browser";
import {ROUTER_PROVIDERS} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
[stuff]
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import {enableProdMode} from 'angular2/core';
import { Title } from 'angular2/platform/browser';
//enableProdMode();
bootstrap(AppDesktopComponent, [
ROUTER_PROVIDERS,
HTTP_PROVIDERS,
Title
]);
Run Code Online (Sandbox Code Playgroud)
有人知道发生了什么事吗?
关于Youtube API博客,他们正在尝试新的HTML5视频播放器.
显然,要在html5中播放视频,您必须使用iframe嵌入代码:
<iframe class="youtube-player" type="text/html" width="640" height="385"
src="http://www.youtube.com/embed/VIDEO_ID" frameborder="0">
</iframe>
Run Code Online (Sandbox Code Playgroud)
但如果客户端未加入HTML5试用版,即使客户端的浏览器支持HTML5视频,播放器也会自动退回到Flash播放器中.
如果浏览器支持HTML5视频播放,如何强制HTML5视频播放,即使用户尚未参与HTML5试用?
否则如何禁用闪回后退?
编辑:
可以强制HTML播放器通过Youtube视频链接,但我需要这种功能用于嵌入式视频.
对于绘图应用程序,我将鼠标移动坐标保存到数组,然后使用lineTo绘制它们.生成的线条不平滑.如何在所有聚集点之间生成单条曲线?
我用谷歌搜索但我只找到了3个绘制线的函数:对于2个样本点,只需使用lineTo.对于3个样本点,quadraticCurveTo,对于4个样本点,bezierCurveTo.
(我尝试在阵列中每4个点绘制一个bezierCurveTo,但这会导致每4个采样点扭结,而不是连续的平滑曲线.)
如何编写一个函数来绘制一个包含5个样本点的平滑曲线?
我想开始使用ES6 Map而不是JS对象,但我被阻止了,因为我无法弄清楚如何使用JSON.stringify()一个Map.我的密钥保证是字符串,我的值将始终是列表.我是否真的必须编写一个包装器方法来序列化?
我正在开发一个需要根据某些外部数据源配置路由的应用程序.应用程序的生命周期如下所示:
实际上有一个带有routesService的另一层抽象,但这个例子不需要
该部分工作,因为我们从主页开始,进行API调用并routerConfigs为每个类别创建.因此,当用户单击某个类别时,路径已经配置了正确的categoryComponent+,metadata并且它们会显示正确的信息.
但是,如果直接访问某个特定的类别页面,那么ng2还没有routerConfigfor the route,因为API调用还没有返回任何内容,更不用说了.Ng2只是使用Header,Footer和一个空路由器来呈现基本应用程序.
我能想到的唯一解决方案就是"hacky".将缓存的json文件保存在应用服务器上并在初始html中加载,然后将其注入ng2 bootstrap/init中的服务.这样,在ng2甚至生物之前配置路线以呈现页面.
我要求任何其他可能的建议,也许有一些我可以接受的更多ng2经验的人.也许这已经解决了,我还没有完善我的google-fu.
提前致谢.
我的页面呈现一个从水平到垂直的形式,@screen-tablet大约是~760px.A4页面宽度约为600像素.
在我print.css缩小所有文本,例如,font-size:85%所有默认字体大小14将打印在12左右.我还想显示格式和它的水平状态,意思是 - viewport > 760px.问题是打印布局将页面宽度设置为A4 ~600px,导致表格垂直显示.
有没有办法"愚弄"布局,认为它超过760px?
(我希望得到一个答案,不需要为打印设置一个全新的布局 - 只是让它看起来像在桌面上一样).
我在*ngFor循环中有一堆输入字段.文档说模板引用变量应该是唯一的.有没有办法做一些#attendee-{{person.id}}让它独一无二的东西?
<div *ngFor="let person of attendeesList">
<input #attendee [ngModel]="person.name" (blur)="changeName(attendee.value)"/>
</div>
Run Code Online (Sandbox Code Playgroud)
(我知道有选择可以做,(ngModelChange)="changeName($event)" 但有理由我需要使用模糊.具体来说,我不希望模型更改,直到人完成输入名称,我们已经验证名称不为空而不是重复的名称.
我一直在尝试在Amazon S3上建立一个静态网站.我已经设置了使用我的个人域名的东西,到目前为止我已经能够访问内容了.所有链接都适用于"根"目录中的页面和子文件夹中的页面,因此似乎S3可以遵循我正在使用的路径.
问题是没有任何CSS样式应用于页面(它在我的本地机器上的开发服务器上工作正常).我尝试过使用相对路径和绝对路径,但这似乎不是问题所在.我可以看到它应该是的内容,我可以正常浏览网站,但没有造型.
我已经尝试搞乱文件夹的权限,但我显然没有做对.我错过了一些明显的东西吗 当然S3可以使用单独的样式表吗?
提前感谢任何想法.
似乎Mongoose在内部做了一些非常时髦的事情.
1 var Foo = new mongoose.model('Foo', new mongoose.Schema({a: String, b: Number}));
2 var foo = new Foo({a: 'test; b: 42});
3 var obj = {c: 1};
4 foo.goo = obj; // simple object assignment. obj should be
// passed by reference to foo.goo. recall goo
// is not defined in the Foo model schema
5 console.log(foo.goo === obj); // comparison directly after the assignment
// => false, doesn't behave like normal JS object
Run Code Online (Sandbox Code Playgroud)
基本上,任何时候你试图处理Mongoose模型的属性,而不是a)在模型的模式中定义或b)被定义为相同的类型(array,obj,..)......模型甚至都没有表现得像一个普通的Javascript对象.
切换第4行以foo._doc.goo = …
angular ×3
typescript ×3
javascript ×2
amazon-s3 ×1
bezier ×1
canvas ×1
css ×1
dictionary ×1
ecmascript-6 ×1
html5 ×1
html5-canvas ×1
json ×1
mongodb ×1
mongoose ×1
node.js ×1
printing ×1
rxjs ×1
spline ×1
video ×1
youtube ×1