在 Typescript 中注释函数
在 typescript 中注释函数的最基本方法是这样的
function add(a: number, b: number): number{ // logic } // or const add = (a: number, b: number): number => { //logic }
可选参数用问号注释 param?像这样
function optional(a: number, b?: number){ console.log(a) }
但是回调函数,或者参数类型和返回类型相关的函数(在这种情况下,泛型)呢?
功能值
观察这个 JavaScript 函数
function multiplier(factor){ return value => factor * value }
这样我们就可以像这样使用这个函数;
const n = multiplier(6) n(8) // 48
函数值在打字稿中注释如下
(param1: type, param2: type)=> type // or const add: (a: number, b: number)=> number = function (a, b){ return a + b }
因此为了注释乘数函数,我们有
function multiplier(factor: number): (value: number) => number{ return value => factor * value }
你的IDE(最好是)VSCode,会自动推断函数逻辑中的值类型(为数字)
通用函数
这个函数注释错误
function pickFirst(array: Array<T>): T{ return array[0] }
自然会抛出一个错误
找不到名字 T
因此,注释泛型函数的格式为
function fnName <T,U>(param: T): U{ //logic }
观察通用名称的声明位置。所以,要正确注释上面的函数;
function pickFirst<T>(array: Array<T>): T{ return array[0] }
现在可以了。
但是具有函数参数的泛型函数又如何。
例如,我们想要注释一个名为 myMap 的自定义地图函数,它是用 Javascript 编写的
function myMap(arr, fn){ rreturn arr.map(fn) }
我们可以这样注释它
function myMap<Input, Output>(arr: Input[], fn: (item: Input, index?: number) => Output): Output[]{ return arr.map(fn) }
在上面的代码片段中我们应该注意的是,fn 函数接受与输入数组相同类型的项并返回输出类型。
静态 Array.from() 方法怎么样?
function myFrom<Type>(iterable: Iterable<Type>): Array<Type>{ // logic }
还是 array.filter() 方法?
function myFilter<Input>(arr: Input[], fn: (item: Input) => boolean): Input[]{ return arr.filter(fn) }
通用约束
您还可以将泛型变量限制为具有特定属性的类型。例如,
function pickInnerFirst<T extends {length: number}>(array: Array<T>): T{ return array[0][0] }
此函数选取二维数组中的第一个元素
这确保它仅适用于数组和字符串(主要),这样
pickOne([12, 20, 30]) // wont work.
我们还可以使用接口
interface Lengthly{ length: number; } function pickInnerFirst<T extends Lengthly>(array: Array<T>): T{ return array[0][0] }
功能接口
如果你不知道,函数是对象并且它们具有属性
const add = (a, b) => a + b console.log(add.toString()) //(a, b) => a + b // also console.log(Object.getPrototypeOf(add) == Function.prototype) //true console.log(Object.getPrototypeOf(Function.prototype) == Object.prototype) //true
第二个示例表明 add 函数是 Object.prototype 的子级(即使它不是直接子级),因此是一个对象。
有趣的是,你可以在 JavaScript 中将属性附加到函数
function add(a: number, b: number): number{ // logic } // or const add = (a: number, b: number): number => { //logic }
此片段将返回
function optional(a: number, b?: number){ console.log(a) }
观察到,在A处,我们将一个名为description的属性附加到函数中,该属性只能通过对象来实现。
由此得出结论;
对象可以用接口来描述(通常)。对于函数来说,这也是可以的。但是,这只是您在向函数添加特殊属性时应该考虑的事情。
function multiplier(factor){ return value => factor * value }
注释 A 是我们描述函数的参数和返回类型的地方。
因此,要在打字稿中注释早期的代码,
const n = multiplier(6) n(8) // 48
观察我们在A处的喊叫功能中使用界面的方式。
为什么我应该了解如何在 Typescript 中注释函数?
嗯,它有助于构建更智能的类型系统,从而减少出现错误的机会。如果您正在构建库或框架,您可能必须使用此处提到的部分或大部分概念。
如果您只是使用库,这些概念并不是真正必要的,尽管它们可以让您更深入地了解您正在使用的库。
如果您有任何疑问或者本文中存在错误,请随时在下面的评论中分享⭐
以上是在 Typescript 中注释函数的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。
