《TypeScript图形渲染实战:2D架构设计与实现》 —1.3.2 解决生成tsconfig.json文件后带来的常见

举报
华章计算机 发表于 2019/12/11 11:51:26 2019/12/11
【摘要】 本节书摘来自华章计算机《TypeScript图形渲染实战:2D架构设计与实现》 一书中第1章,第1.3.2节,作者是步磊峰。

1.3.2  解决生成tsconfig.json文件后带来的常见问题

  如图1.20所示,当生成tsconfig.json文件后,原本的main.ts文件会被标记为红色,并显示有一个错误。之所以这样,是因为在默认状态下,tsconfig.json中的strict命令被设置为true,此时VS Code会对所有TS源码进行严格的类型检测(strict type-checking)。

 image.png

图1.20  TS源码错误提示

  解决这个问题有两种方式:

* 简单地将strict命令设置为false,停止VS Code的严格类型检测。

* 根据VS Code的错误提示修改源码,使之符合VS Code的检测要求。

  来看一下VS Code的错误提示:不能将类型" CanvasRenderingContext2D | null "分配给类型"CanvasRenderingContext2D",这是因为canvas . getContext ( "2d" )的返回类型是CavasRenderingContext | null,而在类Canvas2DUtil中声明的成员变量context的类型是CanvasRenderingContext,和getContext ( "2d" )方法返回的类型不匹配。因此修正代码如下:

 

class Canvas2DUtil {

   public context : CanvasRenderingContext2D | null ;

}

 

  在TypeScript中允许使用“|”操作符来表示联合类型,联合类型是用来表示一个值具有多种不同的类型。上述代码中使用联合类型意味着可以将类型CanvasRendering Context2D或null赋值给context变量。当完成上述修改后,会产生更多的错误,如图1.21所示。

 image.png

图1.21  更多错误提示

  VS Code提示的错误都是“对象可能为null”,因此我们要做的是在调用this . context之前进行null值检查,就能消除VS Code的错误提示。

 

If ( this . context !== null ) {

       this . context . save ( ) ;

       this . context . textBaseline = "middle" ;

       this . context . textAlign = "center" ;

       . . . . . . .

       . . . . . . .

       this . context. restore ( ) ;

}

 

  在笔者使用TypeScript的过程中,“类型不匹配”和“需要null值检测”是被提示最多的信息,因此值得花点时间和篇幅来了解解决方案。在实际开发过程中,使用严格类型检测的确会增加一些代码,但是其所带来的优势也是非常明显的,即让程序更加健壮,这也是TypeScript的魅力所在。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。