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

在Typescript中定义为箭头函数的方法上调用super.method()时出错

在Typescript中定义为箭头函数的方法上调用super.method()时会出错。这是因为箭头函数没有自己的this绑定,它会继承父级作用域的this值。而super关键字只能在派生类的构造函数和方法中使用,用于调用父类的构造函数和方法。

当在箭头函数中使用super.method()时,由于箭头函数没有自己的this绑定,它无法正确地引用到父类的方法。因此,会导致编译错误或运行时错误。

为了解决这个问题,可以将箭头函数改为普通函数,或者使用普通函数来调用super.method()。普通函数会有自己的this绑定,可以正确引用到父类的方法。

以下是一个示例代码:

代码语言:txt
复制
class Parent {
  method() {
    console.log("Parent method");
  }
}

class Child extends Parent {
  arrowFunction = () => {
    // 错误示例,箭头函数无法正确引用到父类的方法
    // super.method();

    // 正确示例,使用普通函数来调用super.method()
    const normalFunction = function() {
      super.method();
    };
    normalFunction();
  }
}

const child = new Child();
child.arrowFunction();

在这个示例中,箭头函数arrowFunction无法直接调用super.method(),会导致编译错误。为了解决这个问题,我们定义了一个普通函数normalFunction,并在其中调用super.method(),这样就可以正确引用到父类的方法。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数(云原生、服务器运维):https://cloud.tencent.com/product/scf
  • 腾讯云数据库(数据库):https://cloud.tencent.com/product/cdb
  • 腾讯云CDN(网络通信):https://cloud.tencent.com/product/cdn
  • 腾讯云安全产品(网络安全):https://cloud.tencent.com/solution/security
  • 腾讯云音视频处理(音视频、多媒体处理):https://cloud.tencent.com/product/mps
  • 腾讯云人工智能(人工智能):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(物联网):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(移动开发):https://cloud.tencent.com/product/mobdev
  • 腾讯云对象存储(存储):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(区块链):https://cloud.tencent.com/product/baas
  • 腾讯云游戏多媒体引擎(元宇宙):https://cloud.tencent.com/product/gme
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在 TypeScript 中使用函数

如果我们将鼠标悬停在编辑器 userFullName 常量,编辑器会将其类型识别为字符串。 TypeScript 可选函数参数 创建函数并不总是需要所有参数。...但在 JavaScript ,我们可以通过多种方式定义函数,例如使用箭头函数本节,我们将向 TypeScript 箭头函数添加类型。 向箭头函数添加类型语法与向普通函数添加类型几乎相同。...使用类型化异步函数 使用 JavaScript ,使用异步函数是比较常见TypeScript 有一种特定方法来处理这个问题。本节,我们将在 TypeScript 创建异步函数。...这样做会导致 TypeScript 编译器发出错误 1375: 输出'await' 表达式仅在文件是模块才允许文件顶层使用,但该文件没有导入或导出。...现在,当我们将鼠标悬停在这些函数,将为每个重载显示注释,如下面的动画所示: 用户定义类型保护 本教程将检查 TypeScript 函数最后一个特性是用户定义类型保护,它们是允许 TypeScript

14.9K10

TypeScript

在编辑器代码提示,可以正确看到前两个提示。 注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果有包含关系,需要优先把精确定义写在前面。...当然,现在编译器足够聪明,调用时候可以不传递类型,编译器可以自己识别的 传递类型,这个类型函数中使用时方法/属性,必须是存在,或者继承自某个接口。...接下来我们以实例化 myNumberClass 例,来分析一下其调用过程: 实例化 IdentityClass 对象,我们传入 Number 类型和构造函数参数值 68; 之后 IdentityClass...这里我有意使用不同变量名,以表明类型值沿链向上传播,且与变量名无关。 #泛型约束 确保属性存在 当我们函数获取length属性,类型number,是没有length,所以会报错。..., // 有未使用参数,抛出错误 "noImplicitReturns": true, // 并不是所有函数代码都有返回值,抛出错

1.8K10

【原创】TypeScript函数以及函数参数

TypeScript函数和参数 TypeScript函数 TypeScript函数写法分为有名函数,匿名函数箭头函数。 有名函数 有名函数包含函数名,函数入参,函数返回值类型等。...function add(x:number,y:number):number { return x+y; } 匿名函数 匿名函数无需包含函数名,可以将函数赋值给一个变量,这里变量可以理解函数方法名...TypeScript参数分为正常参数,可选参数,剩余参数。 正常参数,方法定义需要几个参数就定义几个参数,调用时也需要送对用参数个数和参数类型。...function add(x:number,y:number):number { return x+y; } console.log(add(1,2)); 可选参数,方法定义,某个参数名后添加?...(zhangsan); 剩余参数,指参数定义无法确定需要参数个数,此时就用到了剩余参数。

16010

4000字讲清 《深入理解TypeScript》一书 【基础篇】

写代码,尽可能减少 any 使用; 回到旧代码,开始添加类型注解,并修复已识别的错误; 第三方 JavaScript 代码定义环境声明。...) => number; 可调用 interface ReturnString { (): string; } 箭头函数 const simple: (foo: number) => string...但是,类型断言纯粹是一个编译语法,同时,它也是一种编译器提供关于如何分析代码方法 类型断言通常被认为是有害 很多情景下,断言能让你更容易从遗留项目中迁移(甚至将其他代码粘贴复制到你项目中)...当一个函数没有返回值,它返回了一个 void 类型,但是,当一个函数根本就没有返回值(或者总是抛出错误),它返回了一个 never,void 指可以被赋值类型( strictNullChecking... false ),但是 never 不能赋值给其他任何类型,除了 never TypeScript 索引签名 JavaScript 一个对象类型索引签名上会隐式调用 toString 方法

1.9K30

通过 20 个棘手ES6面试问题来提高咱们 JS 技能

创建它们唯一方法是使用以下方法Symbol构造函数 let symbol = Symbol(); 问题 5: ES6 中使用展开(spread)语法有什么好处?...用新语法调用父原型方法版本比旧语法要简单得多,用super.method()代替ParentConstructor.prototype.method.call(this) 或Object.getPrototypeOf...问题 9: JS 定义枚举首选语法是什么 主题: JavaScript 难度: ⭐⭐⭐ 可以 Object.freeze 来实现枚举 ? 或者 ?...说出三个或更多例子 主题: JavaScript 难度: ⭐⭐⭐⭐ 不应该使用箭头函数一些情况: 当想要函数被提升(箭头函数是匿名) 要在函数中使用this/arguments,由于箭头函数本身不具有...this/arguments,因此它们取决于外部上下文 使用命名函数(箭头函数是匿名) 使用函数作为构造函数(箭头函数没有构造函数) 当想在对象字面是以将函数作为属性添加并在其中使用对象,因为咱们无法访问

1.4K10

从C#到TypeScript - function

函数参数 TypeScript参数和JavaScript参数不太一样,调用JavaScript函数参数可以多或少都可以,但TypeScript函数需要确保传入参数个数和定义一致。...默认值只需要在参数后面写上=某值就可以,默认值参数可以在任意位置,不过必须参数前面,想用默认值的话需要传undefined。 可空参数和前面说可空属性一样,参数名后加?...TypeScript同样可以通过剩余参数来支持,形式类似于C#param。 剩余参数格式是...restParam: string[]。...里总是指向调用者,这点经常容易导致被坑,ES6之前经常需要类似var self = this来把this保存下来。...ES6和TypeScript针对这点做了改进,使用箭头函数可以把创建函数this自动保存下来。

97750

详细介绍 TypeScript 函数各种特性、用法和最佳实践

TypeScript 是一种 JavaScript 基础构建编程语言,它为 JavaScript 提供了静态类型检查和更强大面向对象编程能力。...函数定义调用TypeScript ,我们可以使用 function 关键字来定义一个函数函数定义包括函数名、参数列表和返回类型。...You are 25 years old.调用这个函数,如果没有提供 age 参数,则会使用默认值 18。如果提供了 age 参数,则会使用传递值。...箭头函数TypeScript 也支持箭头函数语法,箭头函数提供了一种更简洁函数定义方式。...总结本文详细介绍了 TypeScript 函数各种特性,包括定义调用函数、可选参数和默认参数、剩余参数、函数重载、箭头函数以及函数类型和回调函数

32520

Python学习笔记整理(十五)类编写

class通过Python继承搜索流程找出方法名称所在之处。事实,这两种调用形式Python都有效。 类方法第一个参数通常称为self。...也就是说,构造,Python会找出并且只调用 一个__init__。如果要保证子类构造方法也会执行超类构造器逻辑,一般都必须通过类明确地调用超类__init__方法。...Python,当对对象进行点号运算,就会发生继承,而且涉及到搜索属性定义树(一或多个命名空间)。...如果预期方法没有子类定义,当继承搜索失败,Python会引发为定义 变量名异常。...较为复杂场景,迭代器对象可定义个别的类或对象,有自己状态信息,对相同数据支持多种迭代。以Python raise语句发出信号表示迭代结束。

88410

TypeScript 官方手册翻译计划【十二】:类

super(); } } JavaScript ,忘记调用 super 是一个常见错误,但 TypeScript 会在必要给你提醒。...箭头函数 如果你函数在被调用时候经常会丢失 this 上下文,那么最好使用箭头函数属性,而不是方法定义: class MyClass { name = 'MyClass'; getName...,即使对于那些没有使用 TypeScript 进行检查代码也是如此 这样会占用更多内存,因为以这种方式定义函数,会导致每个类实例都有一份函数副本 你无法派生类中使用 super.getName,因为原型链没有入口可以去获取基类方法...this 参数 TypeScript 方法或者函数定义,第一个参数名字如果是 this,那么它有特殊含义。...这种方法利弊权衡和上面使用箭头函数方法相反: JavaScript 调用方可能仍然会在没有意识情况下错误地调用方法 只会给每个类定义分配一个函数,而不是给每个类实例分配一个函数 仍然可以通过

2.5K10

【OpenHarmony】TypeScript 语法 ④ ( 函数 | TypeScript 具名函数和匿名函数 | 可选参数 | 剩余参数 | 箭头参数 )

类似 , 但是 JavaScript 函数基础 增加了 类型注解 , 函数代码 可读性 和 健壮性 增加了 ; JavaScript 函数 不需要 声明 形参 和 返回值类型 , 但是...TypeScript , 必须声明 形参和返回值 类型 ; TypeScript 函数 与 Kotlin 函数 极其相似 ; TypeScript 函数 使用 function 关键字定义 , ...函数 可选参数 TypeScript 函数 形参 , 形参名称后面 使用 ?...符号 , 可以将该形参声明为函数 可选参数 , 也就是调用函数 , 可以为该形参传入实参 , 也可以不传入实参 ; 代码示例 : // 声明第二个参数 b 是可选参数 function add(a:..." [LOG]: 1 [LOG]: "传入剩余参数 : " [LOG]: 8 5、TypeScript 箭头函数 ES6 版本 TypeScript 语言中 , 可以定义 " 箭头函数

8410

你不知道 JSON.stringify

undefined、任意函数以及 symbol 值,序列化过程中会被忽略(出现在非数组对象属性值)或者被转换成 null(出现在数组)。...对包含循环引用对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误 我认为 JSON.stringify 能够返回字符串以外东西是挺惊讶。...我还想提一下,TypeScript类型定义在这里是不正确。...例如,下面的代码类型校验可以通过: const result: string = JSON.stringify(undefined); 第2部分,我们将讨论如何更新 TypeScript 定义以确保其正确性...如果这些函数出错误,它将冒泡到调用者。 const obj = { foo: "ignored", toJSON() { throw new Error("Oh no!")

3.3K20

20个ES6面试高频问题

创建它们唯一方法是使用以下方法Symbol构造函数 let symbol = Symbol(); 问题 5: ES6 中使用展开(spread)语法有什么好处?...用新语法调用父原型方法版本比旧语法要简单得多,用super.method()代替ParentConstructor.prototype.method.call(this) 或Object.getPrototypeOf...(Object.getPrototypeOf(this)).method.call(this) 考虑下面代码: 使用 ES6 实现上述功能: 问题 9: JS 定义枚举首选语法是什么 主题:...说出三个或更多例子 主题: JavaScript难度: ⭐⭐⭐⭐ 不应该使用箭头函数一些情况: 当想要函数被提升(箭头函数是匿名) 要在函数中使用this/arguments,由于箭头函数本身不具有...this/arguments,因此它们取决于外部上下文 使用命名函数(箭头函数是匿名) 使用函数作为构造函数(箭头函数没有构造函数) 当想在对象字面是以将函数作为属性添加并在其中使用对象,因为咱们无法访问

1.3K40

30个小知识让你更清楚TypeScript

接口使用该接口对象定义契约或结构。 接口是用关键字定义interface,它可以包含使用函数箭头函数属性和方法声明。...它使用相同范围规则,let并有助于降低整体程序复杂性。 const num:number = 100; 10、TypeScript如何从子类调用基类构造函数?...全局作用域:在任何类之外定义,可以程序任何地方使用。 函数/类范围:函数或类定义变量可以该范围内任何地方使用。...局部作用域/代码块:局部作用域中定义变量可以该块任何地方使用。 23、TypeScript 箭头/lambda 函数是什么? 胖箭头函数是用于定义匿名函数函数表达式速记语法。...其余参数允许你将不同数量参数(零个或多个)传递给函数。当你不确定函数将接收多少参数,这很有用。其余符号之后所有参数...都将存储一个数组

4.7K20

30个小知识让你更清楚TypeScript

接口使用该接口对象定义契约或结构。 接口是用关键字定义interface,它可以包含使用函数箭头函数属性和方法声明。...它使用相同范围规则,let并有助于降低整体程序复杂性。 const num:number = 100; 10、TypeScript如何从子类调用基类构造函数?...全局作用域:在任何类之外定义,可以程序任何地方使用。 函数/类范围:函数或类定义变量可以该范围内任何地方使用。...局部作用域/代码块:局部作用域中定义变量可以该块任何地方使用。 23、TypeScript 箭头/lambda 函数是什么? 胖箭头函数是用于定义匿名函数函数表达式速记语法。...其余参数允许你将不同数量参数(零个或多个)传递给函数。当你不确定函数将接收多少参数,这很有用。其余符号之后所有参数...都将存储一个数组

3.6K20

30道TypeScript 面试问题解析

接口使用该接口对象定义契约或结构。 接口是用关键字定义interface,它可以包含使用函数箭头函数属性和方法声明。...它使用相同范围规则,let并有助于降低整体程序复杂性。 const num:number = 100; 10、TypeScript如何从子类调用基类构造函数?...全局作用域:在任何类之外定义,可以程序任何地方使用。 函数/类范围:函数或类定义变量可以该范围内任何地方使用。...局部作用域/代码块:局部作用域中定义变量可以该块任何地方使用。 23、TypeScript 箭头/lambda 函数是什么? 胖箭头函数是用于定义匿名函数函数表达式速记语法。...其余参数允许你将不同数量参数(零个或多个)传递给函数。当你不确定函数将接收多少参数,这很有用。其余符号之后所有参数...都将存储一个数组

4.3K20

Type Script 基本概念及常用语法

,我们可通过 class 模板来定义我们所需要类型 我们刚刚是通过变量声明时候指定了默认参数,同样,我们调用方法传参,也能同样使用等号来指定参数默认值,不过需要注意是,声明默认值参数要放在最后...: number, c: string = "Niangao") {}那么方法,参数 b 就是可选调用时候就可以不传 b 参数,使用可选参数,需要注意可选参数没传情况,还需要注意是...:用来声明任意数量方法参数 Rest and Spread 操作符还有一个反过来用法,虽然 Complier 中有会报错提示,但却是能够成功运行 第一次调用,由于方法定义 3 个参数,而 args...长度 2,所以调用方法第 3 个 undefine,第二次调用,由于方法只有 3 个参数,args1 长度 4,所以最后一个参数被忽略了 Generator 函数:控制函数执行过程,手工暂停和恢复代码执行...{}括出来,而数组则是使用[]括起来 箭头表达式 箭头表达式是用来声明匿名函数,消除传统匿名函数 this 指针问题 for of 循环 JavaScript ,我们使用循环一般是forEach

2K30

通过 20 个棘手ES6面试问题来提高咱们 JS 技能

常常使用此模式来避免污染全局命名空间,因为IIFE中使用所有变量(与任何其他普通函数一样)在其作用域之外都是不可见。 问题 3:何时 ES6 中使用箭头函数?...创建它们唯一方法是使用以下方法Symbol构造函数 let symbol = Symbol(); 问题 5: ES6 中使用展开(spread)语法有什么好处?...用新语法调用父原型方法版本比旧语法要简单得多,用super.method()代替ParentConstructor.prototype.method.call(this) 或Object.getPrototypeOf...说出三个或更多例子 主题: JavaScript 难度: ⭐⭐⭐⭐ 不应该使用箭头函数一些情况: 当想要函数被提升(箭头函数是匿名) 要在函数中使用this/arguments,由于箭头函数本身不具有...this/arguments,因此它们取决于外部上下文 使用命名函数(箭头函数是匿名) 使用函数作为构造函数(箭头函数没有构造函数) 当想在对象字面是以将函数作为属性添加并在其中使用对象,因为咱们无法访问

82210

四、HarmonyOS应用开发-ArkTS开发语言介绍

ES6版本TypeScript提供了一个箭头函数,它是定义匿名函数简写语法,用于函数表达式,它省略了function关键字。...可以按如下方法调用: arrowFun(param1, parma2,…param n) 接下来我们看看如何将我们熟悉函数定义方式转换为箭头函数。...} } 其调用方法如下: testNumber(1) //输出日志:1 是正数 如果将这个函数定义箭头函数定义如下所示: let testArrowFun = (num: number) => {...'); } } 其调用方法如下: testArrowFun(-1) //输出日志:-1 是负数 后面,我们在学习HarmonyOS应用开发时会经常用到箭头函数。...从UI框架需求角度,ArkTSTS类型系统基础,做了进一步扩展:定义了各种装饰器、自定义组件和UI描述机制,再配合UI开发框架UI内置组件、事件方法、属性方法等共同构成了应用开发主体。

26100
领券