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

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

JSDoc相对于TypeScript的优势: 灵活性和兼容性:JSDoc只是JavaScript注释,这意味着它可以添加到任何JavaScript代码库中,而不受语言版本的限制,并且不像TypeScript...输入完整的类(描述、构造函数和方法) 更进一步,您还可以使用JSDoc输入完整的类语法。...@class 关键字用于表示需要使用 new 关键字调用的函数。 @classdec 用于描述整个类。在编写类时,通过添加类型和描述来进一步完善是很重要的。...构造函数 类中创建的所有方法和变量 我们使用 @params 关键字来提供需要传递给构造函数的参数的类型和描述。类中的方法与函数的类型方式相同,这在前一节中已经介绍过。...它用于创建到指定URL的链接,而 @tutorial 标签用于将用户引导到生成的文档中的相对教程链接。 创建模块:在JSDoc中创建模块可以使用文件顶部的 @module 标签。

83110

JSDoc支持_TypeScript笔记19

; 因此,对于.js文件,需要一种被 JavaScript 语法所兼容的类型标注方式,比如JSDoc: /** @type {number} */ let x; // 错误 Type '"string"...类型转换 类型转换(TypeScript 里的类型断言)语法与 JSDoc 一致,通过圆括号前的@type标记说明圆括号里表达式的类型: /** @type {!...@returns与@return完全等价,后者是前者的别名 类 构造函数 类型系统会根据对this的属性赋值推断出构造函数,也可以通过@constructor标记来描述构造函数 二者区别在于有@constructor...具体的,会对构造函数中的this属性访问以及构造函数参数进行检查,并且不允许(不通过new关键字)直接调用构造函数: /** * @constructor * @param {number} data...等价于 TypeScript 泛型声明: type Wrapper = { value: K; } Nullable JSDoc 中,可以显式指定可 Null 类型与非 Null 类型,例如:

4.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    有JSDoc还需要TypeScript吗

    一旦你在本地完成了所有工作,你就需要考虑如何分发你的代码。你会检查你编译的.js文件吗?你会创建一个CI管道来自动编译你的.ts文件吗?如果你在写一个库,你如何发布你的库,以便它可以被其他项目使用?...你可以通过使用JSDoc在JavaScript中获得TypeScript的所有好处 TypeScript所提供的是一个静态类型系统。这意味着类型信息在运行代码中没有影响。...TypeScript分析器能够理解用JSDoc写的类型,并给你提供与.ts文件相同的静态分析。 我不会在这里提供完整的语法文档。...最重要的是你要知道,几乎所有你能在.ts文件中做的事情,你都能用JSDoc来做。...建议 所以现在我的建议是这样的: 当你正在做一个有编译步骤的项目时,使用TypeScript没有什么坏处 但是如果你不需要编译步骤,那么坚持使用JSDoc类型注释可能更容易。

    35120

    规范JavaScript注释

    以下字段并不是全部,全部请参考JSDoc中文文档或JSDoc中文文档 常用注释关键字 注释名 语法 含义 示例 @param @param 参数名 {参数类型} 描述信息 描述参数的信息 @param...声明类 /** * 类说明 * @class 类名 * @constructor */@class必须搭配@constructor或@static使用,分别标记非静态类与静态类。...如果为负数,则从集合的最后一个元素开始倒数 * @return {Element} 指定元素 */ @param。声明函数参数,必须与@method搭配使用。 @property。...默认情况先一个function就是一个类,ES6中使用Class来表示一个类 我们项目中使用class.js来实现类,在我们项目中使用类注释时需要在@class后边增加类名,不然jsdoc无法自动识别类名...({}) 类的属性 类的属性和变量都会生成到jsdoc文档的Member模块中,在类中使用属性标识 var LBSControllerCom = Com.extends({ /**

    13.2K53

    你真正了解 Java 中的 Date 类吗?以及如何正确使用它

    小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!前言在编程领域中,时间处理是非常重要的一环。...构造函数,使用指定的时间创建Date对象 * @param date 指定的时间 */ public Date(long date) { fastTime = date...但需要注意的是,Date类在Java 8及以后版本中已经被弃用,建议使用新的时间日期API。...在主方法中,首先通过Date类获取当前时间(date),然后使用SimpleDateFormat类将日期格式化为指定格式的字符串(formatter.format(date))。...同时该类也使用了Java中的字符串类(String)和流类(System.out)。全文小结本文介绍了Java中的Date类,包括其简介、源代码解析、应用场景、优缺点分析、类代码方法介绍以及测试用例。

    86173

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

    难道从 TypeScript 切回 JavaScript 已经成了当下的新潮流?这难道不是在开历史的倒车吗?...但前面提到的 TS 的固有问题也困扰着开发者们,直到今年几起标志性事件的发生,将大家的目光拉回 JSDoc,人们惊讶地发现:JSDoc 并没有停留在旧时光中。...255, blue: 255, alpha: 0.1 }; 当然,对于内建了基于 JSDoc 的类型检查工具的 IDE,比如以代表性的 VSCode 来说,其加持能使类型安全锦上添花;与 JSDoc...表单项的很多默认值需要硬编码、多点维护 前后端对于同一概念的变量或动作命名各异 mock 需要手写,并常与最后实际数据结构不符 TDD缺乏依据,代码难以重构 VSCode 中缺乏智能感知和提示 对于以上问题...在通常的情况下,ProtoBuf(Protocol Buffers)的设计思想是先定义 .proto 文件,然后使用编译器生成对应的代码(例如 Java 类和 d.ts 类型定义)。

    55510

    Arrays工具类的使用与数组中的常见异常(二)

    数组中的常见异常在处理数组时,可能会遇到以下常见异常:IndexOutOfBoundsExceptionIndexOutOfBoundsException是一个运行时异常,当试图访问数组中不存在的索引时抛出...例如,当尝试在一个空引用上调用Arrays工具类的方法时,就会抛出NullPointerException。...,在使用Arrays工具类的方法时,如果传入的数组为null或访问的索引超出了数组的范围,都会抛出相应的异常。...与IndexOutOfBoundsException相似,但是IndexOutOfBoundsException是用于非数组的情况,而ArrayIndexOutOfBoundsException是专门用于数组的情况...同时,要仔细阅读Arrays工具类中各个方法的文档,以了解它们的使用方法和限制。

    37441

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

    在浏览器中,问题通常与 DOM 和 HTML 相关,而不是语言本身。 常见的最佳实践 大多数 JavaScript 程序员都同意以下最佳实践: 使用严格模式。...在即将到来的 ECMAScript 6 中,类将是默认的继承构造。 对于构造函数,使用严格模式很重要,因为它可以防止你忘记实例化时使用new操作符。你应该知道你可以在构造函数中返回任何对象。...HTML 您可以在 JSDoc 注释中自由使用 HTML。例如,显示单词的等宽字体。 类型注释 您可以通过大括号中的类型名称来记录实体的类型。...Shim 与 Polyfill 的区别 Shim 和 polyfill 是在旧的 JavaScript 引擎上改进新功能的库: Shim是一个库,它将新的 API 引入到旧的环境中,只使用该环境的手段...一套一致性测试补充了标准,并确保 API 的各种实现是兼容的(ECMA-262 有类似的测试套件)。 我什么时候可以使用它? 大多数现代浏览器已经支持它,或者正在支持它的过程中。

    16210

    c#结构体与类的区别,及使用技巧 C#中的结构体与类的区别

    https://www.cnblogs.com/to-creat/p/5268729.html C#中的结构体与类的区别 经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下...这个错误,仍然提示我们在构造函数中没有为所有的字段赋值,这是很多童鞋遇到的问题,诶,不是要在构造函数中为所有的字段赋值么?我现在赋值了啊。为什么还是提示没有赋值呢?...另外1种创建结构体对象的方式和类一样,使用new关键字来创建,与不使用new关键字创建不同的是,通过使用new关键字创建结构体对象后,这个结构体对象的字段就已经有值了.原因不难理解,new关键字调用了构造函数...与引用类型的类不一样,引用类型的变量中存储的是对象在堆空间中的地址,所以当我们传递1个引用类型的变量的时候,其实传递的是变量的值(对象的地址) 传递完以后 对变量的修改会影响到另外1个变量指向的对象的值...我们在变量传值的时候,我就是希望传递对象的拷贝,而不是对象的引用地址,那么这个时候也可以使用结构了.

    1.2K32

    velocity笔记(二)VelocityTools 中各种工具类的介绍与使用

    目录 背景 GenericTools 使用 什么叫做GenericTools 搭建环境 快速入门 工具类以及案例 DateTool NumberTool MathTool DisplayTool EscapeTool...FieldTool ClassTool 背景 我们已经知道了velocity的基础知识,现在有一个工具包,VelocityTools GenericTools 使用 什么叫做GenericTools...总之就是工具类,我们学习这个,就是学习这个工具类的api 搭建环境 类的文档,现在我们要在模板里面定义事件,那么在工具类的api里面找到相关事件的类。...这个文档里面有很多的类,每一个类里面有很多的方法,我们就是使用这个类里面的方法 比如这个时间,就是一个类,这个类里面有很多的方法 这个类里面的一些方法是 使用步骤: 写一个vm,里面使用工具类

    1.1K20

    如何不编译使用 TypeScript

    在你的项目中使用 TypeScript 需要在开发过程中引入新的构建步骤,这样就降低了和现有为 JavaScript 开发的工具的更广泛的生态系统的兼容性,而且它还要求所有协作开发人员都需要学习这款非标准语言功能...四月份发布的TypeScript 2.3支持通过注释中的类型说明来对原生 JavaScript 代码进行近代分析。您可以使用类 JSDoc 语法来描述函数功能并添加类型信息。...TypeScript 工具从注释中读取类型注释,并以与使用 TypeScript 自己的类型系统相同的方式使用它们。...结论 在过去一年中,我推动简化我的 JavaScript 工具,摆脱现代 Web 开发中开发环境不断膨胀以及构建越来越复杂的困境。...使用注释来对类型进行注释与这个目的很一致:在开发过程中,我不需要多余的构建步骤就可以获得 TypeScript 的优点。

    1.9K40

    【译】不是 TypeScript 的 TypeScript -- JSDoc 的超能力

    目录 带有JSDoc注释的TypeScript 激活检查 内联类型 定义对象 定义函数 导入类型 使用泛型 枚举 typeof 从类扩展 带有 JSDoc 注释的 TypeScript 在最优的情况下,...类型有很多很多,比评论中的几种基本类型更多。结果就是使用 JSDoc 类型可以让你走得很远。...定义对象 除了基本类型,在 JavaScript 中还经常使用到复杂类型和对象,这种情况对基于注释的类型注释也没有问题: /** * @param {[{ price: number, vat: number...: 403, notFound: 404, } 枚举与常规 TypeScript 枚举有很大不同, 枚举确保此对象中的每个键都具有指定的类型。...typeof 这是我最喜欢的工具之一,typeof 也可用。

    3.2K30

    JSDoc 初探:代码内的文档标记

    假设你想要记录诸如模块、名称空间、类、方法、方法参数等内容。 JSDoc注释通常应该放在记录代码之前。为了被 JSDoc 解析器识别,每个注释必须以 /** 序列开头。...它基于标签(tag)的形式,通过注释来提取代码中的类型、描述、参数、返回值等信息,生成文档供其他人参考。使用JSDoc可以提高代码可读性和可维护性,让代码更易于理解和使用。...在JSDoc中,可以使用各种标签来描述代码的不同方面,例如:@param:用于描述函数或方法的参数类型和含义;@returns:用于描述函数或方法的返回值类型和含义;@throws:用于描述函数或方法可能抛出的异常类型和含义...当函数中出现名称为空的情况时,将抛出一个新的Error异常。使用@template标签定义泛型类型参数@template标签用于定义泛型类型参数,以便在函数、类或对象中使用泛型。...如果不传入 type 参数,则函数中可以通过 if (!type) 进行判断,避免出现未定义的错误。使用=标记具有默认值的参数or可选参数在JSDoc中,可以使用 = 符号来标记具有默认值的参数。

    27010

    检查JavaScript文件_TypeScript笔记18

    标注,上例中greeting必填,somebody可选,因此无参和 3 参会报错 特殊的,ES6 可以通过默认参数和不定参数来隐式标记可选参数,例如: /** * @param {string} somebody...any JavaScript 没有提供用来表示泛型参数的语法,因此未指定的类型参数都默认any类型 泛型在 JavaScript 中主要以 2 种形式出现: 继承泛型类,创建 Promise 等(泛型类...(类实例)类型推断的依据,所以上例中C类实例的类型为: // TypeScript type C = { constructorOnly: number; constructorUnknown:...类声明中未出现的属性都是未定义的,访问就报错 构造函数等价于类 另外,在 ES6 之前,JavaScript 里用构造函数代替类,TypeScript 类型系统也能够“理解”这种模式(构造函数等价于...命名空间推断 .js里,类、函数和对象字面量都视为命名空间,因为它们与命名空间非常相似(都具有值和类型的双重含义、都支持嵌套、并且三者能够结合使用)。

    2.4K50

    使用JSDoc提高代码的可读性

    使用JSDoc提高代码的可读性 工作了四年多,基本上都在围绕着 JavaScript 做事情。...而这种情况下我们可以很简单的使用 JSDoc 来手动描述这个函数的作用: ?...如果你把这个当作是对程序的深入了解程度、对业务的娴熟掌握,那么我觉得我也帮不了你了。...当然了,关于函数的,还是推荐使用 @param 和 @return 来实现,效果更好一些 扩展复杂类型 上边的示例大多是基于基本类型的描述,但实际开发过程中不会说只有这么些基本类型供你使用的。...return 该标记就是用来指定函数的返回值,用法与@param类型,并且基本上这两个都会同时出现,与@param的区别在于,因为@return只会有一个,所以不会像前者一样还需要指定参数名。

    1.4K20

    【C++类和对象(中)】—— 我与C++的不解之缘(四)

    前言: 接下来进行类和对象中的学习,了解类和对象的默认成员函数 一、类和对象默认成员函数         默认成员函数就是用户没有显示实现,编译器会自动生成的成员函数。...3、拷贝构造的第一个参数必须是类类型对象的引用,使用传值方式编译器直接报错,因为语法逻辑上会引发无穷递归。...5、运算符重载以后,其优先级和结合性与对应的内置类型运算符保持一致。 6、不能通过连接语法中没有的符号来创建新的操作符:比如operator@。 7、.*    ::   sizeof   ?...函数调用运算符:(),允许自定义类型的对象像函数一样被调用。 成员访问运算符:->,一般 与智能指针或类似智能指针的类一起使用,用于访问指针所指向对象的成员。...2、 const实际修饰该成员函数的this指针,表明在该成员函数中不能对类的任何成员进行修改。

    11010

    JSDoc 真能取代 TypeScript?

    现在问题来了,我有一个 src/index2.js,怎么实现一样的类型检查呢?...这样写: /** * @param {number} a 参数aaa * @param {number} b 参数bbb */ function add2(a, b) { return...再就是 class 了,这个自然也是支持的。 比如声明一个泛型类: 这段类型大家能看懂么? 就是声明了一个泛型类,有一个类型参数 T。它通过 @extends 继承了 Set 类型。...JSDoc 是在 js 的注释里通过 @type、@typedef、@template、@param 等来定义类型,然后开启 checkJS 和 allowJS 的配置之后,tsc 就可以对 js 做类型检查...而且这样也能利用 ts 的类型提示和检查的能力。 所以很多人就说 svelte 抛弃了 ts。 这叫抛弃么? 并不是,JSDoc 只是另一种使用 ts 的方式而已。

    42430

    不需要TypeScript,JS+JSDoc够了?大佬说我想多了

    一方面,开发框架需要具备广泛的兼容性,以便开发者可以在各种项目中使用。由于 JavaScript 是 Web 开发的基础语言,几乎所有的浏览器和环境都支持 JavaScript。...其次,这两者并不冲突,我个人在写 TypeScript 的时候也会写对应的 JSDoc,因为 TypeScript 的类型没法有更多的注释和描述。...李振:理论上也是可行的,但与 TypeScript 相比,它仍然存在一些限制: 静态类型检查的完整性:JSDoc 注释是基于注释的方式,而不是直接嵌入到语言中,因此它的类型检查可能不如 TypeScript...工具支持的差异:尽管一些工具和编辑器可以利用 JSDoc 注释进行类型检查,但与 TypeScript 相比,它们的功能和智能感知可能有所限制。...JavaScript 要实现类似的功能,需要开发者做更多的工作。 Q7:你觉得对普通项目来说,使用 TypeScript 有什么不方便或者不利的地方吗?

    52810
    领券