00:00
好,那么接下来我们再说一些这个TS的编译选项,那接下来我们说的这些编译选项,它都是和我们这个,诶这个语法的检查相关的一些选项,那我们在说他们之前啊,我先对我这个代码简单的处理一下,怎么处理呢?就是把我这些代码里边所有的这个诶引入模块的我先暂时在我们了,以后呢,等现在我是没有关系了,是两个独立的模块了啊,然后在这里边我们要说的第一个属性叫做一个always strict always strict strict,如果我们之前研学习过GS,研究过GS,我们会知道GS有一种模式做格模式,什么是严格模式,简单理解格模式的语法比我们普通模式的语法它要严格一些,并且呢,它在我们浏览器当中的执行的性能呢,诶会好一些,所以一般开发的时候,我们都希望让我们的。
01:01
GS在严格模式下去执行,那当然严格模式跟我们一般的这个模式的话,它会有一些小的区别,那我们怎么去开启严格模式,那很简单,那如果是我们的这个GS文件的话,咱们以GS文件为例吧,我们只需要在GS文件里手动加一个字符串,诶在我们代码开头加一个use strict,这就表示开启了我们这个GS的严格模式,啊,就表示开启了模式,但是现在我们是在写这个TSTS,那默认情况下啊,我们这执行对我们这个TS文件进行编译,默认情况下,我们在对文件进行编译的时候,它默认在我们的代码里是不带这个什么呢?诶这个严格模式的是不会使用严格模式的,那我们要想在我们编译后的GS文件当中去使用严格模式,那我们就需要用到这个always strict always strict它用来干嘛?诶用来设置我们这个,诶编译后的这个文件,诶是。
02:01
是否使用我们这个严格模式,它的默认值也是默认是false,也就是默认它不会使用严格模式,当我们把它设置为true以后啊,我们来看效果。设置出以后,然后我们再对文件进行重新编译,重新编译以后我们来看一下我们的这两个GS文件,你看app.gs啊,因为注意啊,这是编译后的文件,还有m.GS他们开头是不是都加上这个use strict,哎,这个时候就用到了这个严格模式啊,严格模式,所以这个就是我们说的always strict的这么一个效果,设置完了以后,我们的这个代码会自动启用这个,哎,就是设置上这个严格模式,那同学可能会问老师,你刚才为什么把这个这个引入的这些代码你都给它注了呢?诶其实很好理解,我们打开试一下就完事了啊,打开试一下,然后在这儿我们把这些注释的东西,就是这个引入啊,导出啊,这些代码我们给它加上,然后我们再编译一下看效果,这个时候你再看app.gs还有m.GS里边就不带这个了,哎,这是为什么呀,因为什么呀,我们GS里边的。
03:13
EXEXP是导入引出模块了,当我们代码里写了这个玩意儿以后,那我们的GS代码会自动的进入到严格模式,所以当你有这个模块代码的时候,它实际上就已经默认就在一个严格模式下了,所以这里边我们就不用再去,不用再去管它了啊,不用再去管它了,所以这个叫做一个always strict的用来设置我们代码的一个诶严格模式,然后的话往下再看还有什么呢?还有一个属性,我们叫做一个no,诶,Inity any,诶,Inity any什么意思?哎,Any的话我们都知道any是我们TS里边的一个类型啊,一个类型就是当我们整一个变量不指定类型的时候,它的类型默认就是什么呢?就是就是I啥意思呀?比如说我在APP这我写一个变量,我来一个light b,那这个B的类型默认就是I,或者说我们在这儿定一个函数function,我叫一个SN function里面。
04:13
和定义两个参数,参数的话,我们这直接特一个A加上一个B,那这里边我们在定义参数的时候,我没有去指定参数的类型,那这个时候默认情况下,我们这个参数的类型也是什么,也是I,但是我们讲之之前我们讲的时候,我们就说过了,I尼的话,一旦设置实际上就会关闭了我们这个T类查,一旦它的类型检查就全都效了,所以我们是用I你的,但是并不是说绝对不能用啊,有一些场景下你没辙了,是可以用的,但不推荐去使用,那这个时候其实我们说了,我们这种主动去使用的话,我们是不推荐的,也也不都不推荐,那现在像这种这个I你是不是我们主动使用的,哎,并不是,可能我们就忘了写类型了,然后浏览器做这个类型推断,自动的类型检测的时候,他给我们判断出A是IB是埃了,那这个时候它属于什么?哎,不是。
05:13
我们主动用的这种叫什么呢?叫隐式的艾你啊隐式的艾我们说显式的艾你我们都不建议使用,那这种隐式的艾你是不是就更不建议使用了,哎,但是你看啊,我用完了以后,在我们TS里面它并没有过出现任何的任何的问题,是不是还可以去使用啊,哎,还可以使用,那这里边我们如果想他给我检查这种隐式的I怎么办呢?哎,那我可以把这个no in black CT设置为这个I设置为这个。处,那这个时候它就会去检查,诶是否叫什么呢?诶叫做这个,诶不允许我们这个隐视的这个I尼类型啊隐视I类型,当我这样设置完了以后,我们再看这儿,这是不是就给你出呀,诶这个啷里个啷又出来了是吧,我们这个波浪线又出来了,告诉你什么,这儿是不是出现这个隐士的一个安妮类型了,哎隐士的安妮类型就是这么一个意思啊这么意思好,那这个是我们说的一个,哎隐士的I妮类型,然后下边其实还有一些跟它类似的,那我可以写一个啊这个类型呢,我们写一个这个类型呢是一个number,诶这个类型呢,也是一个number,你把这个类型你加上这个错误就就没了啊就没了,然后下边有一个和他这个,诶类似的,类似叫什么呢?叫做一个哎,No inity。
06:35
No in blackity z,哎,Z啥意思呢?哎,也是in black这个词就是隐的意思,没有什么呢,没有隐的一个Z什么意思呢?就是不允许,不允许不。哎,明确类型的一个Z,哎,啥意思,现在我们来看啊,默认值也是false啊,默认值都是false,那这个时候我们就定义一个函数function,我们来一个FN2 FN2在函数里面我们直接打印一下它这个Z,我们都知道函数的Z实际上是和函数的调用方式有关的,以函数的形式调用的时候,这次呢,就是一个诶window以方法形式调用的时候,这次就是一个这个调用方法的对象,当然我们前提是我们说在正常普通模式下,而不是在严格模式下,严格模式下还有一点点的这个,诶不一样,那现在我们就在一个,咱们就现在我们说我们这打印这个Z,这个Z实际上是不明确的,因为首先它的调用方式我们在这儿是不确定的,诶,有可能是在这个严格模式下,有可能在这个非格模式下,有可能是以函数形式掉,有可能是以方法形式掉,所以这个时候这个Z次它到底是谁,在我们这个SN2里,我们实际上这个时候是确定不了的啊,确定不了的那。
07:49
那怎么办,那怎么办,但是现在的话,像这种Z次我们用的时候,它实际上就会有一些风险,因为你不知道它到底是谁用的时候,你就没有那么的确定,有可能你要用的方法它没有对吧,那这个时候我们说了,我就希望TS解析器是不是这这个解析器,TS的这个编译器,它可以把这个错误,这个隐患是不是给我检查出来,哎,那其实就是这个东西,我直接把它设置为处,设置为处以后,它就会去给我检查这个隐示的这次类型不明的Z次,这时候你看当我设置完处以后,这个Z次时候就报错了,诶你看这次他有一个什么呀,诶有一个什么类型,I because什么什么乱七八糟的,就是说白了什么意思,就是你这个Z的类型是不明确的,我不知道你这个它到底是什么,所以在这儿的话,哎,就不让我们,就是给我们不让我们用,说白了就是你需要你一个Z要明确一点,不要那么不确定,那这个问题怎么解决,其实我们在参数的时候,我们也可以去指定一个Z。
08:49
类型我们可以手动指定一个按钮啊,手动指定一个按钮,我不知道它是谁,或者你说我知道它就是window,那我就可以手动指定一个window,也就是说你只要把这个类型给它指定好了,这个Z就可以用了啊,所以这个叫做什么呀?哎,没不允许不明确类型的Z,我得确定知道我这个Z它到底是谁啊,到底是谁,然后再往下看,还有一个,还有一个我们叫做一个strict的no no checks no checks叫什么呢?
09:17
哎,严格的检查这个,哎空值空值啥意思呢?看这了,这个也比较简单,在我们写GS的时候,经常会有这么一些东西啊,写写一个什么呀,我可能会写一个这个呃,Do的代码,比如说我这直接来一个light,一个BOX1 box1等于一个什么呢?Document点一个get白D,我直接来一个BOX1,然后的话,我可能是想给box一来一个绑定一个事件,来一个click,这儿我们直接写一个function绑定这个事件,这个事件里面呢,我们随便写一个啊alert一个hello,这个就是我们这个GS里很简单的一个do啊,给一个元素绑定一个单基函数,那这个时候实际上我们说它这么写的话会有一个问题,因为在这我调了一个get element白,它的作用是去我们这个网页当中获取元素,但是这个时候我获取到这个元素,它一定存在吗?
10:16
哎,是不是有可能BOX1它不存在啊,哎,不存在,不存在,那这就是闹,那你闹点A的EVENT1字呢,是不是就报错了,哎换句话说这可能会报错,虽然不一定报,但是是不是有可能会报错啊,但是这种情况啊,默认你看TS编译器有没有给我检查出来这个问题,诶没有,为什么,就是因为我这个strict的no checks没有设置为true,如果我把它设置为true以后,你看你再回到这儿来看,你看这是不是就出现又出现我们这个红色波浪线了,什么意思,哎,就给你有错误了,什么错误告诉你object有可能是闹啊,有可能是闹,所以这个时候你在编译的时候,它这个编译就就不通过了啊,就不通过了,那这玩意儿怎么办呀,那怎么办?你可以在上边啊,你可以做一个判断,If box1不等于no,然后呢,你才执行下边。
11:16
这些代码,那这样是不是确保它不是闹了,哎,那这样就没有错误了,或者呢,更简单的方式,直接用我们这个GS里边那个这个问号运算符怎么写呢?直接来个BOX1问号,点一个I的invent listener,然后来click click,然后这写一个function。勒一个hello,那个是一个什么效果,这个意思跟上边其实是一样的,就是看BOX1有没有,有我就执行,没有我就不执行,就这么一个意思啊,所以这个叫做一个这个strict no checks这么一个东西,那现在的话,其实我们刚才说这几个,其实就是对我们这个编译器的一些这个检查的一些这个这个配置,关于这个严格检查的话,其实还有一些我们就不再说了,因为它实在是太琐碎了啊,感兴趣可以自己看一下,不感兴趣就着我们这个课程往下看,用到的时候我们自然会去强调它啊,强调它,然后它的话我们其实还有一个,还有一个我们就叫strict strict什么呢?Strict这个相当于是我们所有严格检查的总开关。
12:24
所有严格检查的总开关,总开关这个东西啊,一般我们会往上写。一般我们会往上引,往上写,比如说我就直接写到这个上面。上门什么叫总开关这个东西如果是处,那么所有的严格检查啊,这几个,还有一些其他的所有严格检查全都打开,就是说如果你这个设置为处了,下边这个你都可以省略不写了,哎,那就都开开了,你要想关谁,你再单独设置就OK了,但是你只要一设置为处就都开开了,一设置为false就全都关上,那就不说了,一般我们开发建议设置为处,把所有的严格检查全都开开,这样使我们的代码更严谨,使我们的代码运行起来出错的几率会更低啊,更低。好,那这个就是我们ts con,我们说的一些这种编译选项,但是还是那句话,我们关于TS的这些配置选项的话,还有很多,其实还是挺多的了,但是我们其实并不是所有的都用,或者其实是大部分都没有那么常用,所以我们先了解一下,你知道我们通通过这些配置选项对编译器进行一个配置,后边有哪些我们哎不清楚的。
13:37
啊,不明白的,我们再随着学,随着随着用,再随着去学它,好关于配置选项,我们就先说这么多。
我来说两句