小编Yas*_*nik的帖子

TypeScript中是否可以使用强类型函数作为参数?

在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委托?

typescript

491
推荐指数
7
解决办法
24万
查看次数

Angular 2 beta.17:'Observable <Response>'类型中不存在属性'map'

我刚刚从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尝试转换时出现:

  1. 类型'Observable'上不存在属性'map'(我在地图中使用了带有observable的地图)
  2. c:/path/node_modules/rxjs/add/operator/map.d.ts(216):error TS2435:Ambient模块不能嵌套在其他模块或名称空间中.
  3. 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)

有人知道发生了什么事吗?

rxjs typescript angular

192
推荐指数
15
解决办法
18万
查看次数

强制HTML5 YouTube视频

关于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视频链接,但我需要这种功能用于嵌入式视频.

youtube video html5

118
推荐指数
2
解决办法
20万
查看次数

如何使用javascript HTML5画布通过N个点绘制平滑曲线?

对于绘图应用程序,我将鼠标移动坐标保存到数组,然后使用lineTo绘制它们.生成的线条不平滑.如何在所有聚集点之间生成单条曲线?

我用谷歌搜索但我只找到了3个绘制线的函数:对于2个样本点,只需使用lineTo.对于3个样本点,quadraticCurveTo,对于4个样本点,bezierCurveTo.

(我尝试在阵列中每4个点绘制一个bezierCurveTo,但这会导致每4个采样点扭结,而不是连续的平滑曲线.)

如何编写一个函数来绘制一个包含5个样本点的平滑曲线?

javascript bezier canvas spline html5-canvas

114
推荐指数
7
解决办法
10万
查看次数

你如何JSON.stringify ES6地图?

我想开始使用ES6 Map而不是JS对象,但我被阻止了,因为我无法弄清楚如何使用JSON.stringify()一个Map.我的密钥保证是字符串,我的值将始终是列表.我是否真的必须编写一个包装器方法来序列化?

javascript json dictionary ecmascript-6

71
推荐指数
10
解决办法
3万
查看次数

基于外部数据的动态路由

我正在开发一个需要根据某些外部数据源配置路由的应用程序.应用程序的生命周期如下所示:

  • ng2 inits with App
  • 应用程序包含页眉,路由器插座和页脚
  • 默认路由配置为homeComponent
  • homeComponent有categoriesListComponent
  • categoriesListComponent从categoriesService调用get方法
  • categoriesService从api中获取类别列表
  • categoriesComponent呈现列表并通过routesConfigurator将每个类别的新路由注入App

实际上有一个带有routesService的另一层抽象,但这个例子不需要

该部分工作,因为我们从主页开始,进行API调用并routerConfigs为每个类别创建.因此,当用户单击某个类别时,路径已经配置了正确的categoryComponent+,metadata并且它们会显示正确的信息.

但是,如果直接访问某个特定的类别页面,那么ng2还没有routerConfigfor the route,因为API调用还没有返回任何内容,更不用说了.Ng2只是使用Header,Footer和一个空路由器来呈现基本应用程序.

我能想到的唯一解决方案就是"hacky".将缓存的json文件保存在应用服务器上并在初始html中加载,然后将其注入ng2 bootstrap/init中的服务.这样,在ng2甚至生物之前配置路线以呈现页面.

我要求任何其他可能的建议,也许有一些我可以接受的更多ng2经验的人.也许这已经解决了,我还没有完善我的google-fu.

提前致谢.

angular2-routing angular

25
推荐指数
1
解决办法
2万
查看次数

使用引导网格强制打印布局的视图端口大小

我的页面呈现一个从水平到垂直的形式,@screen-tablet大约是~760px.A4页面宽度约为600像素.

在我print.css缩小所有文本,例如,font-size:85%所有默认字体大小14将打印在12左右.我还想显示格式和它的水平状态,意思是 - viewport > 760px.问题是打印布局将页面宽度设置为A4 ~600px,导致表格垂直显示.

有没有办法"愚弄"布局,认为它超过760px?

(我希望得到一个答案,不需要为打印设置一个全新的布局 - 只是让它看起来像在桌面上一样).

css printing twitter-bootstrap

22
推荐指数
1
解决办法
4695
查看次数

如何在*ngFor中设置唯一的模板引用变量?(角)

我在*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)" 但有理由我需要使用模糊.具体来说,我希望模型更改,直到人完成输入名称,我们已经验证名称不为空而不是重复的名称.

typescript angular

18
推荐指数
2
解决办法
1万
查看次数

Amazon S3静态网站不提供css或js文件

我一直在尝试在Amazon S3上建立一个静态网站.我已经设置了使用我的个人域名的东西,到目前为止我已经能够访问内容了.所有链接都适用于"根"目录中的页面和子文件夹中的页面,因此似乎S3可以遵循我正在使用的路径.

问题是没有任何CSS样式应用于页面(它在我的本地机器上的开发服务器上工作正常).我尝试过使用相对路径和绝对路径,但这似乎不是问题所在.我可以看到它应该是的内容,我可以正常浏览网站,但没有造型.

我已经尝试搞乱文件夹的权限,但我显然没有做对.我错过了一些明显的东西吗 当然S3可以使用单独的样式表吗?

提前感谢任何想法.

amazon-s3

14
推荐指数
1
解决办法
1万
查看次数

猫鼬:怎么了"_doc"?

似乎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 = …

mongoose mongodb node.js

14
推荐指数
3
解决办法
7448
查看次数