问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Qt如何生成.ts文件

发布网友 发布时间:2022-04-19 14:47

我来回答

2个回答

懂视网 时间:2022-05-15 02:26

这次给大家带来怎样做出d.ts文件,做出d.ts文件的注意事项有哪些,下面就是实战案例,一起来看一下。

前言

本文主要讲怎么写一个typescript的描述文件(以d.ts结尾的文件名,比如xxx.d.ts)。

最近开始从js转ts了。但是要用到一些描述文件(d.ts),常用的比如jquery等都可以通过 npm下载到别人已经写好的npm install @types/jquery。但是还是有一些小众的或者公司内部的公共库或者以前写过的公用js代码需要自己手动写描述文件。

之前也从网上面也找了一些资料,但还是看的云里雾里模糊不清,经过一段摸索,将摸索的结果记录下来,也希望可以给别人一个参考。

如果你只写js,d.ts对你来说也是有用的,大部分编辑器能识别d.ts文件,当你写js代码的时候给你智能提示。效果像这样:

详情可以看我以前写过的一些文章:http://www.gxlcms.com/article/138211.htm

通常,我们写js的是时候有两种引入js的方式:

1,在html文件中通过<script>标签全局引入全局变量。

2,通过模块加载器require其他js文件:比如这样var j=require('jquery')。

全局类型

首先以第一种方式举例。

变量

比如现在有一个全局变量,那对应的d.ts文件里面这样写。

declare var aaa:number

其中关键字declare表示声明的意思。全局变量是aaa,类型是数字类型(number)。当然了也可以是string类型或者其他或者:

declare var aaa:number|string //注意这里用的是一个竖线表示"或"的意思

如果是常量的话用关键字const表示:

declare const max:200

函数

由上面的全局变量的写法我们很自然的推断出一个全局函数的写法如下:

/** id是用户的id,可以是number或者string */
decalre function getName(id:number|string):string

最后的那个string表示的是函数的返回值的类型。如果函数没有返回值可以用void表示。

在js里面调用的时候就会提示:

我们上面写的注释,写js的时候还可以提示。

有时候同一个函数有若干种写法:

get(1234)
get("zhangsan",18)

那么d.ts对应的写法:

declare function get(id: string | number): string
declare function get(name:string,age:number): string

如果有些参数可有可无,可以加个?表示非必须。

declare function render(callback?:()=>void): string

js中调用的时候,回调传不传都可以:

render()
render(function () {
 alert('finish.')
})

class

当然除了变量和函数外,我们还有类(class)。

declare class Person {
 static maxAge: number //静态变量
 static getMaxAge(): number //静态方法
 constructor(name: string, age: number) //构造函数
 getName(id: number): string 
}

constructor表示的是构造方法:

其中static表示静态的意思,用来表示静态变量和静态方法:

对象

declare namespace OOO{ 
}

当然了这个对象上面可能有变量,可能有函数可能有类。

declare namespace OOO{
 var aaa: number | string
 function getName(id: number | string): string
 class Person {
 static maxAge: number //静态变量
 static getMaxAge(): number //静态方法
 constructor(name: string, age: number) //构造函数
 getName(id: number): string //实例方法
 }
}

其实就是把上面的那些写法放到这个namespace包起来的大括号里面,注意括号里面就不需要declare关键字了。
效果:

对象里面套对象也是可以的:

declare namespace OOO{
 var aaa: number | string
 // ...
 namespace O2{
 let b:number
 }
}

效果:

混合类型

有时候有些值既是函数又是class又是对象的复杂对象。比如我们常用的jquery有各种用法:

new $()
$.ajax()
$()

既是函数又是对象

declare function $2(s:string): void
declare namespace $2{
 let aaa:number
}

效果:

作为函数用:

作为对象用:

也就是ts会自动把同名的namespace和function合并到一起。

既是函数,又是类(可以new出来)

// 实例方法 
interface People{
 name: string
 age: number
 getName(): string
 getAge():number
}
interface People_Static{
 new (name: string, age: number): People
 /** 静态方法 */
 staticA():number
 
 (w:number):number
}
declare var People:People_Static

效果:

作为函数使用:

类的静态方法:

类的构造函数:

类的实例方法:

模块化

除了上面的全局的方式,我们有时候还是通过require的方式引入模块化的代码。

比如这样的效果:

对应的写法是这样的:

declare module "abcde" {
 export let a: number
 export function b(): number
 export namespace c{
 let cd: string
 }
 }

其实就是外面套了一层 module "xxx",里面的写法和之前其实差不多,把declare换成了export。

此外,有时候我们导出去的是一个函数本身,比如这样的:

对应的写法很简单,长这个样子:

declare module "app" {
 function aaa(some:number):number
 export=aaa
 }

以此类推,导出一个变量或常量的话这么写:

declare module "ccc" {
 const c:400
 export=c
 }

效果:

UMD

有一种代码,既可以通过全局变量访问到,也可以通过require的方式访问到。比如我们最常见的jquery:

其实就是按照全局的方式写d.ts,写完后在最后加上declare namespace "xxx"的描述:

declare namespace UUU{
 let a:number
}
 
declare module "UUU" {
 export =UUU
}

效果这样:

作为全局变量使用:

作为模块加载使用:

其他

有时候我们扩展了一些内置对象。比如我们给Date增加了一个format的实例方法:

对应的d.ts描述文件这样写:

interface Date {
 format(f: string): string
}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

通讯录首字母检索功能实现

progressbar组件实战案例解析

热心网友 时间:2022-05-14 23:34

下面介绍怎么制作和使用qt的翻译文件:
一、生成.ts翻译文件(.ts是可读的翻译文件,使用简单的XML格式)
启动qt的命令行工具: 开始 -> 程序-> qt4.7.0 -> qt4.7.0 commond prompt ;
在命令行窗口中,进入到工程目录 ;
利用编辑工具打开.pro文件 ,在末尾添加 TRANSLATIONS += yourproject_zh.ts
等号右边的名字可以自己取,比如中文的就用后缀_zh, 英文的就用 _en ,便于识别
4. 然后回到qt命令行窗口, 执行
lupdate –verbose yourproject.pro //生成相应的.ts 文件
二、编辑 .ts文件
1)接上,在命令行窗口中执行
linguist //启动Linguist语言翻译工具,可以翻译相应可见字符串
(启动:命令行或者开始菜单均可)
2)打开:工具界面中的File--->Open,可以打开所需的 .ts
文件
3)翻译:界面中部的翻译栏,两行:第一行:Source Text 第二行:… Translation,
在地二行进行相应的翻译即可,翻译完一条之后点击“确定下一个”按钮。
保存即可。
三、生成.qm文件(.qm是经过.ts转换而成的二进制机器语言)
lrelease –verbose spreadsheet.pro //将翻译好的文件生成.qm文件
四、修改或新加入界面部件时
只需从 lupdate -verbose 这一步开始执行,即可。
然后把生成的.qm文件放到正确的目录中,即可实现翻译的效果。

如果是安装了插件的visual studio ,也可以右击解决方案,实现 lupdate 和 lrelease 命令同样的功能。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 电脑ts文件播放 怎么把几个TS文件合成一个TS文件啊 iOS什么播放器支持TS文件 ts是什么文件? .TS是什么文件? .ts 文件怎么播放啊啊 请问ts格式的文件会有病毒么 TS格式的视频文件怎么转换成mp4文件 .ts是什么格式的文件 和.mp4的区别是什么 ts格式的影片~ 用什么播放器播放啊 ts文件用什么播放 ts格式的文件用什么播放器能播放? 视频是ts文件打不开怎么办? .ts文件怎么打开 ts文件怎么打开 关于ts是什么文件? 荣耀9x和iPhone8哪个好? 超级QQ怎么建群?可以建几个啊? 怎样在开通年版超级QQ 怎么样创建2000人QQ超级群 如何将多段ts文件合并成一个ts文件 iPhonese与荣耀9X谁性能好? 编写微信小程序所需要的基础 微信小程序制作要多少钱? 怎么编辑微信小程序 如何编写微信小程序 微信小程序难开发吗 微信小程序怎么开发? 苹果xr好还是荣耀9x好? 如何快速解冻牛肉 牛肉怎么快速解冻 牛肉怎样解冻最快 牛肉怎样快速解冻 牛排如何快速解冻 牛肉解冻的最快办法 冰冻牛肉怎样快速解冻 牛肉怎么解腻 牛排微波炉解冻几分钟? 牛肉炒几分钟最好 怎样解冻牛肉又快又鲜