在C++项目中编译TypeScript(以下简称ts)

  编辑ts文件的属性,项类型选择“自定义生产工具”。

  命令行输入tsc所在位置与编译参数,我的是"C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.2\tsc" %(Identity) --out %(RelativeDir)/%(FileName).js -t es5。有空格的UNC(通用命名惯例)需要用双引号引起来。%(Identity)是被编译文件位置。

    --out是输出参数,后面紧跟输出位置。可以忽略此参数,那么输出的文件名只是简单的修改ts扩展名为js。

    -t(--target)是目标类型,我用ES5,还可以是"ES3" (default), "ES5", "ES6"/"ES2015", "ES2016", "ES2017" or "ESNext"。

  说明写%(Identity)就可以,这个随意。

  输出写%(RelativeDir)/%(FileName).js,用于比较编译事件,判断编译必要性。

ps:这是我研究的方法,我感觉还有更标准的。官方并没有介绍如何在c++项目中怎么编译。

在ts中引用jquery的声明

  【仅适用于VS开发环境,不适合VSCode及其他IDE】jquery并没有使用ts编写,所以git上也找不到ts文件,好在vs对jquery提供了强大的支持,任意项目类型新建html文件,包含任意版本jquery的js文件,那么你的智能提示就自动支持$了。接下来鼠标定位在$左或右按F12查看定义就会自动转到index.d.ts文件,右键标签选打开所在目录,就能找到这个文件,复制到自己的项目目录。

  用三斜杠语法引用到当前ts文件/// <reference path="jquery.d.ts"/>

  .d.ts文件是声明文件,并不含有逻辑代码,只是结构而已。

如何为自己的ts文件生成声明文件

  同前,tsc编译程序可以生成声明文件,只需要参数-d/--declaration 及ts文件即可。

  例如:tsc -d main.ts

用命令行编译ts文件?

  可以,只要你不嫌麻烦。VS的开发者命令提示符(Developer Command Prompt for VS 2017)可以直接使用tsc命令。你可以把它固定到“开始”屏幕,提高开启效率。

拿不到声明如何解决

  

  declare var swal: (arg: any) => any;

  加入你有swal这样一个函数并没有提供ts声明,这样就可以自由使用了。当然,这是一个参数的掉用。

  ts里HTMLElement.remove这个成员是不存在的,只能用它父对象的removeChild,这样不是很方便。

  dom:HTMLElement;

  (<any>dom).remove();// 就这样勉强的转为any再调用remove吧。

不用为每个对象都建立一个类

  ts的class不支持内部声明class。所以成员的类型声明在class外面也不太合适。

  class foo{
    member:{mem1:number, mem2?:string};// 加问号表示可有可无
  }

  这样member就类似一个内部类了。

事件的订阅及this参数

  class bar{
    sub(){
      dom.onclick=function(){this};
    }
  }

  这样function函数里的this是dom对象。

  dom.onclick=()=>{this};

  这个this表示的是类bar的实例。

  那么我想又要有dom这个对象,又要有bar的实例呢?

  我目前只能用闭包了:

  class bar{
    click(node:HTMLElement, ev:MouseEvent){
      this...
    }
    dom.onclick = (ev:MouseEvent)=>this.click(dom,ev);
  }

  dom用闭包传进去,this还是你期待的this,毕竟click是bar的成员函数。

只读属性不用readonly

  如果你想修改,readonly对类内部访问不太方便

  所以应该用Object.defineProperty,ts有更方便的set/get操作属性。

  class baz{
    _attr:[];
    get attr(){
      return _attr;
    }
  }

  这样attr就只能读取了。要使用属性特性,需要将ts编译器的目标选项(-t/--target)设置到es5或以上。

本文章会持续更新,只要是ts的相关技巧我都会更新,如果你也关注typescript技术,请关注我/收藏此文章。

btw:cnblogs不支持ts代码着色,用的JS代码着色。

TypeScript技巧集锦(陆续更新)的更多相关文章

  1. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的

    ===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...

  2. 最有用的Linux命令行使用技巧集锦

    最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...

  3. [视频]MAC OS 技巧之如何更新及重装MAC系统

    mac os是当今最好用的桌面操作系统,但再好的系统也有新版本发布的一天,或者被极客的你尝试各种设置而配置混乱了,这时我们就要进行系统更新或者重装了. 系统更新 Mac OS有新版本推出时,会自动在A ...

  4. Cocos2d-x 3.0final手机游戏开发视频教程2014 - 自学编程 -(陆续更新中)

    内容: 非常多人问我:沈老师,要不要更新引擎版本号到3.0,更新这么快,以后会不会每一个月都有一次,好怕呀. 我说:无论你曾经是哪个版本号,3.0final是一个架构级别的升级,能够在新项目中果断升级 ...

  5. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  6. Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动

    Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动 使用cookie类型的纹理模拟云层的移动 现实生活中,当阳光直射大地,而天空中又有很多云时,云层的影子总是会投射在大地上,风吹着 ...

  7. Unity 游戏开发技巧集锦之创建透明的材质

    Unity 游戏开发技巧集锦之创建透明的材质 Unity创建透明的材质 生活中不乏透明或者半透明的事物.例如,擦的十分干净的玻璃,看起来就是透明的:一些塑料卡片,看起来就是半透明的,如图3-23所示. ...

  8. Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质

    Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质 创建部分光滑部分粗糙的材质 生活中,有类物体的表面既有光滑的部分,又有粗糙的部分,例如丽江的石板路,如图3-17所示,石板的表面本来是粗糙的, ...

  9. Unity 游戏开发技巧集锦之材质的应用的创建反射材质

    Unity 游戏开发技巧集锦之材质的应用的创建反射材质 Unity中材质的应用 游戏中,大多数材质的应用都离不开纹理,而纹理本身是图片.所以,在学习本章时,最好在电脑上安装一个可以编辑图片的功能强大的 ...

随机推荐

  1. php生成二维码的几种方式整理及使用实例

    hp生成二维码的方式:1.google开放api:2.php类库PHP QR Code:3.libqrencode:4.QRcode Perl CGI & PHP scripts感兴趣的朋友可 ...

  2. JQuery速成大法

    什么是JQuery呢,很多都是只闻其名. jQuery是一个快速.简洁的JavaScript框架,是一个优秀的JavaScript代码库.jQuery设计的宗旨是"write Less,Do ...

  3. 极光的开源礼物「Aurora IMUI」

    今日,奉上我们拙作,仅为开源世界献出绵薄之力. Aurora IMUI,一个通用的即时通讯(IM)UI 库.不局限于任何 IM SDK. 本 UI 库提供了消息列表.输入视图等常用组件. 初心 过去的 ...

  4. java虚拟机总结

    jvm内存模型 u  程序计数器 u  Java栈(虚拟机栈) u  本地方法栈 u  Java堆 u  方法区及其运行时常量池 垃圾回收机制 u  新生代和老年代 u  参数设置 u  垃圾回收(M ...

  5. [.NET] 《Effective C#》快速笔记 - C# 中的动态编程

    <Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...

  6. coding.net及git的使用方式

    一般部分测试的公司里可能会用到代码管理工具,这里可能不得不推荐coding.net和git这个工具,类似于svn,不过用命令行的情况多点 这里简单介绍下 1.建立coding.net 首先新建一个co ...

  7. java-cef嵌入基于Chrome内核浏览器,做页面爬虫(可以尽在ajax异步请求数据)

    1 CentOS 7.0 上安装和配置 VNC 服务器 2.1 2.1.1 首先,我们需要一个可用的桌面环境(X-Window),如果没有的话要先安装一个. 注意:以下命令必须以 root 权限运行. ...

  8. Adline网络的LMS算法与梯度下降

    LMS算法,即为最小均方差,求的是误差的平方和最小. 利用梯度下降,所谓的梯度下降,本质上就是利用导数的性质来求极值点的位置,导数在这个的附近,一边是大于零,一边又是小于零的,如此而已... 而这个里 ...

  9. JavaScript中的DOM函数与关键字汇总

    DOM节点的属性 属性 描述 attributes数组 获取某个节点的所有属性子节点(实际是一个NodeList对象) childNodes数组    获取某个节点的所有子节点,可以按数组方式访问子节 ...

  10. Java中线程的使用 (2)-多线程、线程优先级、线程睡眠、让步、阻塞

    Java中线程的使用 (2)-多线程.线程优先级.线程睡眠.让步.阻塞 (一)多线程使用方法 说明:创建每个新的线程,一定要记得启动每个新的线程(调用.start()方法) class Xc3 ext ...