如何学习用Typescript写Reactjs

 我来答
我努力的方式
2017-05-13 · 知道合伙人教育行家
我努力的方式
知道合伙人教育行家
采纳数:16676 获赞数:94928
国际注册高级纹绣师 国家高级形象设计师 国家高级化妆造型师

向TA提问 私信TA
展开全部
先从搭建环境开始:
1.安装node,因为ts的编译器是js/ts写的;
安装node后同时获得npm命令,这是nodejs世界里的包管理器(也可以看作node的app商店);
2.安装vs 2015或者vs code,当然这不是必须的,但是这里强烈推荐写ts的工具,vs第一,vsc第二;
3.vs自带了TypeScript(vs2012+,vs2015update1自带了ts1.7),最新版本的typescript for vs去官网下载即可, 或者如果不依赖vs(比如mac环境), 可以用命令行装ts编译器

npm i -g typescript@next

4. 安装了ts后, 就会有2个命令可用:tsc和tsd, tsc用来编译TypeScript代码, tsd用来下载第三方js类库的ts定义文件(或者叫头文件),熟练使用tsd,工作效率提升,因为减少了80%查文档的时间,所以写ts可以说是jser打通了任督二脉,上手任何新的开发环境都很快;
<img src="https://pic1.zhimg.com/444acaf7af6ed25f9490b22423249cc4_b.jpg" data-rawwidth="500" data-rawheight="333" class="origin_image zh-lightbox-thumb" width="500" data-original="https://pic1.zhimg.com/444acaf7af6ed25f9490b22423249cc4_r.jpg">
有网友指正tsd工具不是安装ts的时候自带的,需要另外安装,装太久不记得了。
npm install tsd -g
5. 命令行下载react的ts头文件,

tsd install react-global --save

注意上面之所以写 react-global 而不是react, 因为我们接下来使用比较原始的写法,直接把React当作全局对象使用, 而不作为es6模块(必须用import引入),不需要Babel编译也不需要webpack打包;
上面执行的tsd命令下载了ReactJS类库的头文件, 下面用tsc命令创建一个ts项目配置文件

tsc --init

命令创建了tsconfig.json配置文件, 打开该文件
增加"jsx": "react", 就是自动把tsx变成最终的js, 而不是jsx
把"outDir": "built", 这行去掉,这样编译的文件就会在当前目录输出
"target": "es5", 这里es3改成es5,
"watch": true 是否监听文件修改 如果你用的是vs,这行不重要
<img src="https://pic4.zhimg.com/aeee17ca0016c27ed7d4d629ffb50c9b_b.png" data-rawwidth="453" data-rawheight="392" class="origin_image zh-lightbox-thumb" width="453" data-original="https://pic4.zhimg.com/aeee17ca0016c27ed7d4d629ffb50c9b_r.png">
6.下载reactjs文件,如果没有安装bower命令,可以手动去官网下载react类库

bower install --save react

7.以上环境配置好了, 开始写代码:
创建一个demo.tsx文件(注意这里是tsx, 不是ts也不是jsx)
创建一个demo.html, 添加文件的引用

<!doctype html>
<html>
<head>
<script src="bower_components/react/react.min.js"></script>
<script src="bower_components/react/react-dom.min.js"></script>
<script src="demo.js"></script>
</head>
<body>

</body>
</html>

8. demo.tsx 写代码

class MyClass extends React.Component<any, any> {
render() {
return <h1>hello {this.props.name}</h1>;
}
}

document.addEventListener('DOMContentLoaded', function () {
ReactDOM.render(<MyClass name="Tom" />, document.body);
});

9. 如果保存了demo.tsx后, 没有在目录下发现自动编译了demo.js, 那么可能是vs没配置好,如果你没有装vs或者vsc,没关系,在当前文件夹下命令行运行

tsc

tsc命令会自动根据tsconfig.json里面配置的情况, 自动帮你把代码编译成js, 这是编译后的js文件
<img src="https://pic2.zhimg.com/bcf832c25409b6fc8edf8ae5a7d21acd_b.png" data-rawwidth="940" data-rawheight="466" class="origin_image zh-lightbox-thumb" width="940" data-original="https://pic2.zhimg.com/bcf832c25409b6fc8edf8ae5a7d21acd_r.png">

10. 打开demo.html可以看到效果了;
<img src="https://pic1.zhimg.com/c83b68fc1aa4fcdf21e222a2ba790048_b.png" data-rawwidth="468" data-rawheight="122" class="origin_image zh-lightbox-thumb" width="468" data-original="https://pic1.zhimg.com/c83b68fc1aa4fcdf21e222a2ba790048_r.png">11. 至于题主说怎么学习, 其实跟JS完全没两样, 上面demo.tsx的代码, 跟react官网的es6写法一模一样多了&lt;any,any&gt; 这两个prop和states类型约束, 仅此而已;
11. 至于题主说怎么学习, 其实跟JS完全没两样, 上面demo.tsx的代码, 跟react官网的es6写法一模一样多了<any,any> 这两个prop和states类型约束, 仅此而已;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式