导航:首页 > 源码编译 > ts编译dts

ts编译dts

发布时间:2023-08-26 01:23:40

㈠ ts类型断言(二)

一、将任何一个类型断言为any

ts 的类型系统运转良好,每个值类型都具体而精确。当我们引用一个在此类型 上不存在的属性或方法时,就会报错:

上面的例子中,数字类型的变量 num 是没有length 属性的,故ts给出了相应的错误提示。

但有的时候,我们非常确定这段代码不会出错,比如下面这个例子:

上面的例子中,我们需要将window.上添加一个属性 num,但ts编译时会报错,提示我们window上不存在nun属性。 此时我们可以使用 as any 临时将 window 断言为 any 类型

在any类型的变量上,访问任何属性都是允许的。

注意 :将一个变量断言为any可以说是解决ts中类型问题的最后一个手段。 它极有可能掩盖了真正的类型错误。 如果不是非常确定,就不要使用 as any

我们不能滥用 as any , 也不要否定它的作用

二、将any断言为一个具体的类型

在开发中,我们不可避免需要处理any类型的变量,它们可能是由于第三方库未能定义好自己的类型,也有可能是 历史 遗留的或其他人编写的烂代码,还可能是受到ts类型系统的限制而无法精确定义类型的场景。

遇到any类型的变量时,我们可以选择无视它,任由它滋生更多的any。

我们也可以选择改进它,通过类型断言及时把any断言为精确的类型,亡羊补牢,使我们的代码向着高可维护性的目标发展。

例如项目之前定义了一个 getCalander,它的返回值是any:

那么我们在使用它时,最好能够将调用了它之后的返回值断言成一个精确的类型, 这样就方便了后续的操作:

选择语言

上面的例子中,我们调用完getCalander之后,将它断言为CalanderType类型,从而明确getCurrentDate的类型,后续对getCurrentDate的访问时就有了代码补全,提高承俄码以可维护性。

三、类型断言的限制

根据之前的例子,我们可以得出:

1、联合类型可以被断言为其中一个类型

2、父类可以被断言为子类

3、任何类型都可以被断言为any

4、 any 可以被断言为任何类型

那么类型断言有没有什么限制呢?是不是任何一个类型都可以被断言为任何另一个类型呢?

其实并不是任何一个类型都可以被断言为任何另一个类型。

具体来说,若A兼容B,那么A能够被断言为B,B也能被断言为A。

下面我们通过一个简化的例子,来理解类型断言的限制:

上例是可以断言的,我们再看看下面的栗子:

这个时候会提示错误,两者不能充分重叠,这意味要想断言成功,还必须具备有一个条件:

即:要使得A能够被断言为B,只需要A兼容B或B兼容A即可

四、双重断言(不建议使用)

”任何类型都可以被断言为any , any 可以被断言为任何类型

那么我们是不是可以使用双重断言 xxx as any as xxx 将任何一个类型断言为任何另一个类型呢?

在上面的例子中,若直接使用mySelf as Fish肯定会报错,因为mySelf 和Fish 互相都不兼容。

若使用双重断言,则可以打破“要使得A能够被断言为B,只需要A兼容B或B兼容A即可”的限制,将任何一个类型断言为任何另一个类型到若你使用了这种双重断言,那么十有八九是非常错误的,它很可能会导致运行时错误。

㈡ 03 Puerts for Unity 搭建 Ts 编译环境

在上两节中,脚本文件内容一直都是 Js。Ts 作为 Js 的超集,不能直接丢进 V8 中运行,其在运行时仍然是以 Js 形式出现的。

所以,还需要搭建 Ts -> Js 的编译环境。

Ts 编译器有很多。例如:tsc(亲儿子)、esbuild、swc 等...

这里将介绍两种方案:

可以将以下内容,复制到初始化好的 package.json 中。

这里稍对其内容稍作介绍

在项目目录下运行 yarn 或 npm install 来拉取依赖到本地,拉取到的所有的依赖都将保存在 node_moles 目录中。

该文件用于配置 Ts 的 相关配置项

修改文件内容如下,稍后对参数稍作讲解:

参数基本说明:

该配置文件主要有以下几个作用:

对于该配置文件有以下几个要求:

在 Assets/Editor/ 目录下(没有则手动创建该目录),创建 PuertsConfig.cs 文件,内容如下:

出于轻量和速度考虑,且这里只需要对 Js 进行一些简单处理,并不需要用到诸如 Webpack、Grunt、Gulp...这些强大的工具。

所以自己撸一个编译相关的处理脚本,在项目根目录下创建 Build.js ,其内容如下:

运行 yarn run watch:swc 或 yarn run watch:tsc 启动监听编译,这样 TypeScript 目录下所有的 ts 文件有任何改动。都会实时编译。

在 TypeScript/ 目录下创建 main.ts 文件,内容如下:

看一下 Assets/StreamingAssets/Scripts/ 有应该有编译出对应的 Js 文件,如果没有可以尝试重新保存一下文件或执行 yarn run build:tsc 手动编译(只编译一次)。

试着运行下游戏试试吧!

㈢ vue3怎么修改ts类型

vue3修改ts类型设置自动编译ts-js文件,在集成终端中打开具体操作如下:
1、根据查询相关信息显示:生成配置文件tsconfig.jsontscinit。
2、进入上述配置文件修改tsconfig.json配置outDir:./js,把ts文件编衡型译最终存咐芦猜放的位置strict:false,不使用严格模式。
3、启动监视任务,终端->运行任务->显示所有任哗做务->(tsc监视)。

阅读全文

与ts编译dts相关的资料

热点内容
冒险岛什么服务器好玩 浏览:541
如何在服务器上做性能测试 浏览:791
命令序列错 浏览:257
javaif的条件表达式 浏览:576
手机app上传的照片怎么找 浏览:531
云服务器面临哪些威胁 浏览:746
c语言各种编译特点 浏览:177
路由器多种加密方法 浏览:604
程序员阻止电脑自动弹出定位 浏览:168
如何做服务器服务商 浏览:761
su剖切命令 浏览:726
devc编译背景 浏览:211
学习单片机的意义 浏览:51
音频算法AEC 浏览:911
加密货币容易被盗 浏览:82
苹果平板如何开启隐私单个app 浏览:704
空调压缩机一开就停止 浏览:528
如何下载虎牙app 浏览:847
日语年号的算法 浏览:955
dev里面的编译日志咋调出来 浏览:298