新足迹

 找回密码
 注册

精华好帖回顾

· 西澳南部6天2000多公里自驾游(全文完) (2007-10-9) 樱桃 · 墨市五周--找工纪实 (2006-9-9) Henrychen
· 北方人最爱的打卤面 (2005-2-5) susan · 发个贴,咱也结束了有牌无车的历史. (2007-8-31) dlmhd99
Advertisement
Advertisement
查看: 3249|回复: 31

ms把strongly type成功的延伸到js,这只是个开始 [复制链接]

发表于 2012-10-3 10:31 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整

评分

参与人数 1积分 +4 收起 理由
IsDonIsGood + 4 感谢分享

查看全部评分

Advertisement
Advertisement

发表于 2012-10-3 11:22 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
TypeScript is a language for application-scale JavaScript development.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.

看起来不错,不知道跨平台的怎么样。

发表于 2012-10-3 11:28 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
findcaiyzh 发表于 2012-10-3 10:22
TypeScript is a language for application-scale JavaScript development.
TypeScript is a typed superse ...

貌似现在只有针对vs2012的plug in, 对其他环境的全面支持很快就能出来,它是open source的,社区可以做。

发表于 2012-10-3 11:33 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
其实我只是希望有个检查错误的工具,我倒是能容忍函数式编程。可能是我接触的项目都太小了。

发表于 2012-10-3 12:04 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
findcaiyzh 发表于 2012-10-3 10:33
其实我只是希望有个检查错误的工具,我倒是能容忍函数式编程。可能是我接触的项目都太小了。 ...

嗯,上点规模的现在用backbone.js集中管理一下也还能说得过去,比单纯的jQuery条理,但有问题也是在runtime发现的多。

typescript把这种管理提前到compile阶段,是不错。

但自动生成的js的performance/style都被不少人指责,有人把它跟IL比,不需要关心,我个人觉得没什么太大的可比性,有问题web的应用还是要在browser端debug的,所以js要生成的合理,容易被人理解。

这东西毕竟这是初始阶段,要给它点时间成长。

发表于 2012-10-3 12:10 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
无视 发表于 2012-10-3 11:04
嗯,上点规模的现在用backbone.js集中管理一下也还能说得过去,比单纯的jQuery条理,但有问题也是在runti ...

对,现在的版本是0.8 。

安装居然需要重启系统。
Advertisement
Advertisement

发表于 2012-10-3 12:41 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这应该算js的一个大方向吧。

发表于 2012-10-3 13:05 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
试了一下,不知道是不是在我vs2012里有问题,编译web project的时候,.js不会被编译,需要手动在命令行里执行。ts文件的Build Action默认就是TypeScriptCompile了。

默认的template包含:
// Interface
interface IPoint {
    getDist(): number;
}

// Module
module Shapes {

    // Class
    export class Point implements IPoint {
        // Constructor
        constructor (public x: number, public y: number) { }

        // Instance member
        getDist() { return Math.sqrt(this.x * this.x + this.y * this.y); }

        // Static member
        static origin = new Point(0, 0);
    }
     
}


// Local variables
var p: IPoint = new Shapes.Point(3, 4);
var dist = p.getDist();

翻译成js为
var Shapes;
(function (Shapes) {
    var Point = (function () {
        function Point(x, y) {
            this.x = x;
            this.y = y;
        }
        Point.prototype.getDist = function () {
            return Math.sqrt(this.x * this.x + this.y * this.y);
        };
        Point.origin = new Point(0, 0);
        return Point;
    })();
    Shapes.Point = Point;   
})(Shapes || (Shapes = {}));

var p = new Shapes.Point(3, 4);
var dist = p.getDist();

不能直接调试是个问题,在浏览器中调试,还得熟悉生成的代码。

发表于 2012-10-3 13:06 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Event Hanlder和C#的Lambada很像

window.onload = () => {
    var p: IPoint = new Shapes.Point(3, 4);
    var dist = p.getDist();

    window.alert(dist.toString());
};

TS文件里没法使用jquery.

评分

参与人数 1积分 +4 收起 理由
无视 + 4 感谢分享

查看全部评分

发表于 2012-10-3 13:26 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
IsDonIsGood 发表于 2012-10-3 11:41
这应该算js的一个大方向吧。

我个人觉得对js newbie是个good news,但对有相当经验的js developer来说,他们可能不一定买帐,毕竟机器产生的代码style根手写的很不同,调试起来很陌生,如果大规模前端开发产生这种代码,对js dev来说可能是灾难性的。

这种趋势跟传统开发肯定有冲突,被传统势力反弹是一定的。

发表于 2012-10-3 13:36 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
无视 发表于 2012-10-3 12:26
我个人觉得对js newbie是个good news,但对有相当经验的js developer来说,他们可能不一定买帐,毕竟机器 ...

我觉得如果不能和Jquery什么的混用,不太适合GUI部分,除非能做到Jquery的程度。 Application和数据部分应该比较适合,但是一般也不会放到js这边吧。倒是node.js可以使用。
Advertisement
Advertisement

发表于 2012-10-3 13:38 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
findcaiyzh 发表于 2012-10-3 12:36
我觉得如果不能和Jquery什么的混用,不太适合GUI部分,除非能做到Jquery的程度。 Application和数据部分 ...

我觉得在winjs方面可能有更广泛的应用

发表于 2012-10-3 14:16 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
强人弄得,不知道弄得强不强

发表于 2012-10-3 14:30 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
无视 发表于 2012-10-3 12:38
我觉得在winjs方面可能有更广泛的应用

我总感觉不能直接调试是个大麻烦。

发表于 2012-10-3 14:43 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
生成的 js 代码还是很标准的,虽然深度不高。不过这东西的灵感不就是 coffeescript 的微软版嘛!人家玩剩下好多年了,又捡到个剩饭,不是新趋势 。

发表于 2012-10-3 14:56 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
看了后面的评论,果然第一反应就是对的,还是 coffee script 的老套路,三轮车追飞机,追不上的。
Advertisement
Advertisement

发表于 2012-10-3 15:07 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不看好这个

发表于 2012-10-3 15:10 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Dan.and.Andy 发表于 2012-10-3 13:43
生成的 js 代码还是很标准的,虽然深度不高。不过这东西的灵感不就是 coffeescript 的微软版嘛!人家玩剩下 ...

嗯,dart,coffeescript都是这方面的先驱,但不是ms推的,就没这么大的影响力,没办法

发表于 2012-10-3 16:09 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
无视 发表于 2012-10-3 14:10
嗯,dart,coffeescript都是这方面的先驱,但不是ms推的,就没这么大的影响力,没办法 ...

用一种语言作为中间层生成另外一种语言,这本身就是脱了裤子放屁。为什么不直接来?其实要真想推,ms 就应该走回 silverlight, wpf 的老路,坚定IE9就是绝版了,置于死地而后生。老大老跟别人跑,小兵很累。

发表于 2012-10-3 22:54 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不是 strongly type的 看代码真是痛苦

如果有个n 年的 legacy code 在上面,根本没办法看
头像被屏蔽

禁止访问

发表于 2012-10-3 23:19 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
script 要是 strongly type 了,还叫script吗? 最后又多了一种语言,何必呢?
Advertisement
Advertisement

发表于 2012-10-4 10:23 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
findcaiyzh 发表于 2012-10-3 12:05
试了一下,不知道是不是在我vs2012里有问题,编译web project的时候,.js不会被编译,需要手动在命令行里执 ...

有人说以后要加source map来解决客户端调试的问题,类似的解决方案。

http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

发表于 2012-10-4 11:00 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这种approach的成熟产品和best practise,算上community的贡献,怎么也要半年,而且它的target是很大规模的js开发,中小型的project没必要用它,backbone.js+jquery就完全可以搞定。

发表于 2012-10-4 11:53 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
无视 发表于 2012-10-4 10:00
这种approach的成熟产品和best practise,算上community的贡献,怎么也要半年,而且它的target是很大规模的 ...

很大规模是什么意思?

js 就是 script, 它的灵活性就在于小窍门,毕竟它不是OO的语言。以前我也有过 strongly type 的观点,现在彻底抛弃了,你不可能用 js 实现一个人的接口,然后男人,女人的抽象类,然后女人有月经的虚方法。js 就是老关,她50了,留月经false, 基于对象的脚本,换成现实世界最现实的就是 DOM Node, 你99%的时间在干这个。还要再Wrap 一下给新手,下场就是 web form, 看上去很美。

发表于 2012-10-4 12:18 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Dan.and.Andy 发表于 2012-10-4 10:53
很大规模是什么意思?

js 就是 script, 它的灵活性就在于小窍门,毕竟它不是OO的语言。以前我也有过 str ...

在ECMAScript 6 的draft里面,它有对class的新要求,他们要把javascript变成universal programming language,现在windows那边都在讨论如何摒弃xmal而转到javascript来适应新win8的趋势。

我的感觉js不再是通常意义上在browser上run的script了,大家从engine和syntax level都给它新的含义,我们的观点也应该相应的改变。

http://wiki.ecmascript.org/doku. ... pecification_drafts

download 最新2012/09/27的pdf draft, page 176有对class的定义

发表于 2012-10-4 12:31 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
js 现在也能做类做继承,只是怪怪的

其实一个语言有它自己的特点
没必要硬往其它语言上套。

我倒很喜欢它的灵活性,可以随意定义obj, 随意定义property,
职业灌水赚分
Advertisement
Advertisement

发表于 2012-10-4 12:36 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Nodejs 就是跟浏览器无关的js了

发表于 2012-10-4 12:55 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
典 发表于 2012-10-4 11:31
js 现在也能做类做继承,只是怪怪的

其实一个语言有它自己的特点

Backbone.js 从应用层面来说让用户可以觉得自己在用class,也可以extend自己的logic...

我觉得挺满意的。原生态的js的确感觉很奇怪

发表于 2012-10-4 13:06 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
无视 发表于 2012-10-4 11:55
Backbone.js 从应用层面来说让用户可以觉得自己在用class,也可以extend自己的logic...

我觉得挺满意的 ...

No. 感觉还是一个 object,绝对不是 class, 这点跟 extend jQuery object 是一样的。

发表于 2012-10-4 13:11 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Dan.and.Andy 发表于 2012-10-4 12:06
No. 感觉还是一个 object,绝对不是 class, 这点跟 extend jQuery object 是一样的。

好吧,只能说我的满意点比较低

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部