首页
学习
活动
专区
工具
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脚本定义和使用类型。这些方法可以帮助开发者在编写代码时更好地理解和使用变量的类型,提高代码的可读性和可维护性。

相关搜索:如何在不进行初始定义的情况下为ranges::view定义类型?JSDoc如何在不创建新类型定义的情况下向类型添加成员Laravel我如何在没有角色的情况下为不同类型的用户进行登录?如何在给定行索引和起始列索引的情况下为numpy数组赋值?如何在没有类型定义的情况下定义泛型类型“has property”constrint?如何在没有表的情况下定义复杂的返回类型?我如何在没有警告的情况下处理这些类型定义?Django:如何在没有N+1请求的情况下为queryset的每个元素添加自定义属性?结构、类型定义和c#头文件;如何在没有.c文件的情况下集成JS:如何在没有NPM的情况下使用库?如何在没有GeneralizedNewTypederiving扩展的情况下为一元解析器实现Monad、MonadError和MonadState?如何在没有类型错误的情况下使用add_reaction()?在给定经度和纬度的情况下,如何在没有循环的情况下找到两点之间的距离?如何在PowerShell中创建自定义类型以供我的脚本使用?如何在Dhall中定义和使用类似Haskell的sum类型如何在没有webpack配置的情况下使用ReactJs和Symfony如何在没有npm的情况下使用Vue.js元素?如何在不使用客户端id和客户端密钥的情况下为webapi生成oauth令牌如何在没有引用的情况下为测试导入模拟数据多次使用相同的模拟对象/数组时会出现问题如何在没有Sceneform的情况下使用ARCore和OpenGL显示和锚定文本?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JSDoc ,一个可替代 TypeScript 的方案?

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

83110

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

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

55510
  • 有JSDoc还需要TypeScript吗

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

    35120

    如何优雅地编写一个高逼格的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有许多类型注释大家可以自行搜索学习下

    1.1K10

    我们如何为 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.4K20

    检查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(Speaking JavaScript):第二十六章到第三十章

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

    16210

    精读《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 书写标签输入回车后,会自动根据类型补全内容,如: JSDoc,毕竟代码和类型分离随时有不一致的风险产生。

    68120

    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 的方式而已。

    42430

    TS in JS 实践指北

    JSDoc 在 JS 中有一个非常好的优势。在和 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.5K20

    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-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.8K10

    @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

    使用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.8K20

    @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

    规范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

    13.2K53

    JavaScript 重构攻略

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

    1.9K20

    使用JSDoc提高代码的可读性

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

    1.4K20
    领券