首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在没有JSDoc的情况下为给定的.js脚本定义和使用类型?

在没有JSDoc的情况下为给定的.js脚本定义和使用类型,可以采用以下方法:

  1. 类型推断(Type Inference):JavaScript是一种动态类型语言,它可以根据变量的赋值推断出变量的类型。通过观察代码中变量的使用和赋值情况,可以推断出变量的类型,并在代码中进行相应的类型注释。
  2. 类型注释(Type Annotation):虽然没有JSDoc,但是可以在代码中使用注释的方式来标注变量的类型。例如,在变量声明的地方使用注释来说明变量的类型,或者在函数参数和返回值的地方使用注释来说明参数和返回值的类型。
  3. 使用TypeScript:TypeScript是JavaScript的超集,它提供了静态类型检查和类型注解的功能。将.js脚本重命名为.ts,并使用TypeScript编译器进行编译,可以获得更强大的类型检查和类型推断功能。
  4. 使用Flow:Flow是Facebook开发的JavaScript静态类型检查工具,它可以在JavaScript代码中添加类型注解,并进行类型检查。通过在代码中添加类型注解,可以提供类型推断和类型检查的功能。

总结起来,尽管没有JSDoc,但可以通过类型推断、类型注释、使用TypeScript或Flow等工具来为给定的.js脚本定义和使用类型。这些方法可以帮助开发者在编写代码时更好地理解和使用变量的类型,提高代码的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JSDoc ,一个可替代 TypeScript 方案?

本文将向您展示如何使用JSDoc来获得相同类型控制,同时使用纯JavaScript进行最快开发时间更好文档编写! JavaScript已经巩固了其作为近年来最常用脚本语言之一地位。...JSDoc语法具有多种用途,包括用类型注释值,为函数指定参数返回类型,为函数提供文档使用信息,以及类型错误等。...在一个 .js 文件中添加JSDoc所述只是注释,通过使用额外 * 开启一个注释来完成 // Normal Javascript Comment 1 /* Normal Javascript Comment...构造函数 类中创建所有方法变量 我们使用 @params 关键字来提供需要传递给构造函数参数类型描述。类中方法与函数类型方式相同,这在前一节中已经介绍过。...注意:这假设您已经从前一节安装了 jsdoc 。如果没有,请先安装它,然后再运行此步骤。 结论 到目前为止,我们已经学会了使用JSDoc基础知识,以及从JSDoc代码生成类型和文档网站。

53910

不是Typescript用不起,而是JSDoc更有性价比?

业内开始用 TypeScript 是因为 TypeScript 提供了类型检查,弥补了 JavaScript 只有逻辑没有类型问题, 对于大型项目、多人协作和需要高可靠性项目来说,使用 TypeScript...直到 2011 年,重构后 JSDoc 3.0 已经可以运行在 Node.jsJSDoc 语法举例 定义对象类型: /** * @typedef {object} Rgb * @property...在通常情况下,ProtoBuf(Protocol Buffers)设计思想是先定义 .proto 文件,然后使用编译器生成对应代码(例如 Java 类 d.ts 类型定义)。...能力,我们可以设计一种退而求其次、虽不中亦不远矣改造方案 -- 在要求后端团队写出相对比较规整实体定义前提下,编写提取转换脚本,定期或手动生成对应 JSDoc 类型定义,从而实现前后端业务逻辑准确同步...,理论上如果能基于 AST 等手段当然更好,但本例中 Java 似乎没有特别成熟转换工具,java-parser 等库文档资料又过少。

31110

JSDoc还需要TypeScript吗

这听起来是不是很耳熟:你想写一个小型脚本,不管是为页面、命令行工具,还是其他什么类型。你从JavaScript开始,直到你想起写代码时没有类型是多么痛苦。所以你把文件从.js重命名为.ts。...如果你在编写CLI脚本,你可以求助于Deno(它支持TypeScript,开箱即用),但是你需要设置你IDE来理解DenoAPI,而且混合匹配Denonode并不总是那么容易。...一旦你在本地完成了所有工作,你就需要考虑如何分发你代码。你会检查你编译.js文件吗?你会创建一个CI管道来自动编译你.ts文件吗?如果你在写一个库,你如何发布你库,以便它可以被其他项目使用?...你可以通过使用JSDoc在JavaScript中获得TypeScript所有好处 TypeScript所提供是一个静态类型系统。这意味着类型信息在运行代码中没有影响。...建议 所以现在我建议是这样: 当你正在做一个有编译步骤项目时,使用TypeScript没有什么坏处 但是如果你不需要编译步骤,那么坚持使用JSDoc类型注释可能更容易。

29620

如何优雅地编写一个高逼格JS插件?

原型链写法 要开始编写插件就得先了解JS模块化,早期模块化是利用了函数自执行来实现,在单独函数作用域中执行代码可以避免插件中定义变量污染到全局变量,举个栗子,以下代码实现了一个简单随机数生成插件...自动化API文档 一个 JS 插件如果没有一份文档,如同一台精密仪器没有说明书。当别人使用插件时,他不可能去查看源码才知道这个插件有哪些方法、用途如何、要传哪些参数等。...所以这里我们使用 JSDoc 来创建 API文档,它使用简单,只需要在代码中编写规范注释,即能根据注释自动生成文档,一举多得,十分优雅!...npm install --save-dev jsdoc open 修改 package.json,增加一条脚本命令: ....... "scripts": { .........map.has(x[key]) && map.set(x[key], true)) } export default ArrayDelSome 本例只演示最基础用法,JSDoc有许多类型注释大家可以自行搜索学习下

1K10

检查JavaScript文件_TypeScript笔记18

、Promise 等定义在外部d.ts里) 其它自定义泛型(通过 JSDoc 标明泛型类型) 例如: // 继承泛型类 - .js import { Component } from 'react';...: React.ReactNode; }> 因为在.js没有指定泛型参数类型时,默认为any,所以不报错。...对于没在构造函数中定义,或者构造函数中类型为undefined或null(此时为any)属性,其类型为所有赋值中右侧值类型联合 定义在构造函数中属性都认为是一定存在,其它地方(成员方法)出现都当作可选...("end"); 同样,多次赋值时,类型为各值类型联合 不定参数推断 .js里会根据arguments使用情况来推断是否存在不定参数,例如: // .js function sum() { var...命名空间推断 .js里,类、函数对象字面量都视为命名空间,因为它们与命名空间非常相似(都具有值类型双重含义、都支持嵌套、并且三者能够结合使用)。

2.4K50

我们如何为 JavaScript 客户端减半模块化 AWS SDK 发布规模

我们从*.js文件中删除了注释 我们将类型脚本代码转换到 JavaScript 在节点常见目标中.js 浏览器 es5 目标。我们还将类型作为分布在不同文件夹中。...复制代码 Bash 我们从*.d.ts文件中删除了注释 为了支持使用旧版本类型脚本客户,我们使用 downlevel-dts 将具有新类型脚本功能代码转换为使用等效旧功能代码下级类型。...我们也没有考虑使用高级或替代汇编选项,谷歌关闭编译器,巴贝尔或SWC。如果您有想法/建议或例子,他们如何可以帮助,请评论 GitHub 问题 aws/aws-sdk-js-v3/#2897....我们也在考虑航运节点.js特定分布类型定义分布在单独预发行版本编号,这可能进一步减少npm安装大小从之间 60% 75``%. 虽然预期改进是巨大,但实施之前需要大量讨论测试。...如果您有关于类型脚本源代码源图反馈,或想解释您调试或其他使用案例,请评论 GitHub 问题 aws/aws-sdk-js-v3/#2895. 您如何做出贡献?

2.3K20

大话 JavaScript(Speaking JavaScript):第二十六章到第三十章

括号样式 在大括号界定代码块语言中,括号样式决定你放置这些括号位置。在类 C 语言( Java JavaScript)中,有两种最常见括号样式:Allman 样式 1TBS。...HTML 您可以在 JSDoc 注释中自由使用 HTML。例如,显示单词等宽字体。 类型注释 您可以通过大括号中类型名称来记录实体类型。...JSDoc 对实例成员有一个广泛定义。它意味着可以通过实例访问一切。因此,实例成员包括实例属性原型属性。 命名类型 实体类型要么是基本类型,要么是类。...首先,您需要告诉 JSDoc 给定变量持有一个类。其次,您需要标记一个对象文字为定义类。您可以通过@lends标签来实现后者: /** * A class for managing persons...所有这些标签都在JSDoc 网站上有文档: 模块化:@module,@exports,@namespace 自定义类型(用于虚拟实体,回调,其签名可以由您记录):@typedef,@callback

12910

精读《Typescript 4.5-4.6 新特性》

类型可以被替换 TS 因开箱即用特性,捆绑了所有 dom 内置类型,比如我们可以直接使用 Document 类型,而这个类型就是 TS 内置提供。...JS 目前还没有做到自动尾递归优化,但可以通过自定义函数 TCO 模拟实现,下面放出这个函数实现: function tco(f) { var value; var active = false...不过目前来看,构建脚本支持语法并不统一,比如 Vite 对导入类型断言有如下两种方式: import obj from "./something?...片段自动补全增强 在 Class 成员函数与 JSX 属性自动补全功能做了增强,在使用了最新版 TS 之后应该早已有了体感,比如 JSX 书写标签输入回车后,会自动根据类型补全内容,: <App cla...顺便说一句,用了 TS 就尽量不要用 JSDoc,毕竟代码类型分离随时有不一致风险产生。

65020

JSDoc 真能取代 TypeScript?

TypeScript 我们知道,是用来给 JS 加上类型,可以实现类型提示编译时类型检查。 那 JSDoc 能够完成一样功能么?Svelte 是出于什么原因弃用 TS 呢?...但现在并没有类型错误: 需要在 tsconfig 里开启: allowJS 是允许编译 JS,checkJS 是在编译 JS 时候也做类型检查。...这就是 JSDoc 最大好处:无侵入JS 加上类型,拥有 ts 一样类型检查、类型提示、生成 dts 等功能,但却不需要编译,因为 JS 代码可以直接跑。...JSDoc 是在 js 注释里通过 @type、@typedef、@template、@param 等来定义类型,然后开启 checkJS allowJS 配置之后,tsc 就可以对 js类型检查...而且这样也能利用 ts 类型提示检查能力。 所以很多人就说 svelte 抛弃了 ts。 这叫抛弃么? 并不是,JSDoc 只是另一种使用 ts 方式而已。

33830

JSDoc支持_TypeScript笔记19

TypeScript 类型系统解析这些 JSDoc 标记得到额外类型信息输入,并结合类型推断对.js文件进行类型检查 P.S.关于.js类型检查更多信息,见检查 JavaScript 文件_TypeScript...Compiler,更多相关讨论见Add support for @template JSDoc 三.类型标注语法 TypeScript 兼容 JSDoc 类型标注,同时也支持在 JSDoc 标记中使用...{string | boolean} */ var sb; 二者等价,只是语法略有差异 跨文件类型引用 特殊,能够通过import引用定义在其它文件中类型: // a.js /** * @typedef...: number) => boolean 还可以用@typedef特殊语法(仅 TypeScript 支持,JSDoc没有)把对象或函数类型定义整合到一行: /** @typedef {{ prop1...({string=})不适用于对象字面量类型,例如@type {{ a: string, b: number= }}是非法类型声明,可选属性应该用属性名后缀?

4.1K10

TS in JS 实践指北

JSDocJS 中有一个非常好优势。在 TS 有关能力中,「直跳」这个行为大部分时候会定位到代码声明位置,而不是定义位置。... JS 打交道程序员绝大部分不希望去关注目标代码声明,而是想知道定义内容是什么。如果在 JS 使用 type 全靠 .d.ts 声明文件,每次「直跳」可能会使真相离得更远。...TS in JS with JSDoc 1.丢失出参类型标题所述。...在 JS使用 TS 能力方法 1.使用声明文件2.使用 JSDoc 这两种方式还可以一起作用,实现一些复杂类型效果。...怎么去应用 1.对公共组件全局变量编写声明文件2.对自定义函数编写 JSDoc 注释,并优雅完善它3.对作用域不清晰变量、对象等使用 JSDoc @type,去指定它类型 注意事项 1.不要瞎用

4.4K20

@ ts-check

多亏了 TypeScript JSDoc,这两个愿望都有变成现实可能。...JSDoc 添加类型 如果仅仅使用 // @ts-check的话,我们只能使用自动类型推断功能,这对于大型项目来说是远远不够,我们希望能像强类型语言一样指定每个变量类型。..., p1, p2, p3, p4){ // TODO } /** * 也可以使用模板来声明类型 * fn4 表示返回值参数 p1 是相同类型 * @template T * @param...{T} p1 * @return {T} */ function fn4(p1){} 写在最后 对于老项目,使用 // @ts-check JSDoc 引入 TypeScript来享受类型系统好处是最简单...对于新项目,相较于激进地使用 .ts 文件,我认为 // @ts-check JSDoc 是更好方法,因为 JavaScript在不久未来很有可能会引入可选类型系统(类似于Python 3),

2.7K10

@ts-check

多亏了 TypeScript JSDoc,这两个愿望都有变成现实可能。...@ts-check 立即上手 使用 TypeScript最佳方式肯定是直接使用语法来编写 .ts 文件,然后通过编译器转换成 .js 文件。...JSDoc 添加类型 如果仅仅使用 // [@ts-check](/user/ts-check)的话,我们只能使用自动类型推断功能,这对于大型项目来说是远远不够,我们希望能像强类型语言一样指定每个变量类型..., p1, p2, p3, p4){ // TODO } /** * 也可以使用模板来声明类型 * fn4 表示返回值参数 p1 是相同类型 * @template T * @param...对于新项目,相较于激进地使用 .ts 文件,我认为 // [@ts-check](/user/ts-check) JSDoc 是更好方法,因为 JavaScript在不久未来很有可能会引入可选类型系统

1.8K80

@ts-check

多亏了 TypeScript JSDoc,这两个愿望都有变成现实可能。...@ts-check 立即上手 使用 TypeScript最佳方式肯定是直接使用语法来编写 .ts 文件,然后通过编译器转换成 .js 文件。...JSDoc 添加类型 如果仅仅使用 // [@ts-check](/user/ts-check)的话,我们只能使用自动类型推断功能,这对于大型项目来说是远远不够,我们希望能像强类型语言一样指定每个变量类型..., p1, p2, p3, p4){ // TODO } /** * 也可以使用模板来声明类型 * fn4 表示返回值参数 p1 是相同类型 * @template T * @param...对于新项目,相较于激进地使用 .ts 文件,我认为 // [@ts-check](/user/ts-check) JSDoc 是更好方法,因为 JavaScript在不久未来很有可能会引入可选类型系统

1.1K20

使用uglifyjs压缩js

最简单使用方式: uglifyjs main.js -o main-min.js -c 下面是一些压缩时常用参数 一些常用参数列表 -o,--output 指定输出文件,默认情况下为命令行...,加了-m参数,uglifyjs也可以做到,默认情况下,是不会改变变量名称) -r,--reserved 保留变量名称,不需要被-m参数改变变量名 -c,--compress OK,主角登场了...--comments 用来控制注释代码 如果压缩时候想要保留版权信息,可以如下使用: uglifyjs main.js --comments -m -o main-min.js 当然,...首先需要是JSDoc-style样式风格注释,然后评论中需要包含"@license"或者"@preserve"就可以了。...完整代码如下: @echo off :: 设置压缩JS文件根目录,脚本会自动按树层次查找压缩所有的JS SET JSFOLDER=C:\Users\Administrator\Desktop\formini

5.6K20

规范JavaScript注释

以下字段并不是全部,全部请参考JSDoc中文文档或JSDoc中文文档 常用注释关键字 注释名 语法 含义 示例 @param @param 参数名 {参数类型} 描述信息 描述参数信息 @param...@author 作者信息 [附属信息:邮箱、日期] 描述此函数作者信息 @author 张三 2015/07/21 @version @version XX.XX.XX 描述此函数版本号 @version...默认情况先一个function就是一个类,ES6中使用Class来表示一个类 我们项目中使用class.js来实现类,在我们项目中使用类注释时需要在@class后边增加类名,不然jsdoc无法自动识别类名...类属性变量都会生成到jsdoc文档Member模块中,在类中使用属性标识 var LBSControllerCom = Com.extends({ /** * @member...注释规范 jsdoc 小康jsdoc

12.5K53

JavaScript 重构攻略

一、模块划分命名空间 通常我们团队中,开发人员在 Java 语言层面具备相当技术素养,经验丰富,而且有许多成熟、合理规约,类型繁多代码隐患检查工具,甚至在团队间还有计划内评审飞检。...使用命名空间是保持 js 互不干扰一个好办法,js 讲究起面向对象,就必须遵循封装、继承多态原则。...另外,优先使用 JavaScript 原生对象容器,比如 Array,Ajax 数据类型统一切到 JSON 上来,尽量不要使用隐藏域;另外,通常是不允许随意扩展 DOM 对象。...可是这样组件方法定义不够优雅,也不够直观,方法都是放在独立位置定义,并没有最开始组件方法放置在一起,如果能像 Java 那样定义岂不更好? 对了,可以用闭包来实现。...(依赖关系:5->1->2->3->4) 上述 JS 在开发过程中需要细化,并且需要严格限定互相之间依赖关系,但在发布时,使用脚本或者 JS 聚合压缩工具整合到特定一个或几个 JS 文件中。

1.8K20

使用JSDoc提高代码可读性

而这种情况下我们可以很简单使用 JSDoc 来手动描述这个函数作用: ?...实际上@type使用频率相较于其他两个是很低,因为大多数情况下@type用于标识变量类型。 而变量来源基本上只有两个 1. 基本类型赋值 2....当然了,关于函数,还是推荐使用 @param @return 来实现,效果更好一些 扩展复杂类型 上边示例大多是基于基本类型描述,但实际开发过程中不会说只有这么些基本类型供你使用。...使用@typedef定义类型可以很轻松复用,在需要地方直接指定我们定义类型即可。 同理,这样定义类型可以直接应用在@return中。...,在切换到 TypeScript 之前,使用 JSDoc 能够在一定程度上降低维护成本,尤其是使用 vscode 以后,要手动编写注释实际上是没有多少

1.4K20
领券