但如果你在内部方法单独抽出来在外部调用,this此时会指向undefined(严格模式); class Parent { sayName() { console.log(this);//undefined this.sayAge(26); }; sayAge(age) { console.log(age); } }; let son = new Parent(); let {sayName} = son; sayName();//报错 1. 2. 3. 4. 5. 6....
this可以说是Javascript里最难理解的特性之一了,Typescript里的 this 似乎更加复杂了,Typescript里的 this 有三中场景,不同的场景都有不同意思。 this 参数: 限制调用函数时的 this 类型 this 类型: 用于支持链式调用,尤其支持 class 继承的链式调用 ThisType:用于构造复杂的 factory 函数 3.TS this 类型: 用于...
例如,假设有一个HttpClient类用于发送HTTP请求,在Person类中需要使用HttpClient类发送请求,可以通过将HttpClient作为构造函数的参数进行注入: class HttpClient { // 发送 HTTP 请求的方法 } class Person { // 使用 this.http 发送 HTTP 请求 constructor(private http: HttpClient) {} } 在上面的例子中,Person类接...
上述的代码会自动检查对象 a 是否为null或undefined,如果是的话就立即返回undefined,这样就可以立即停止某些表达式的运行。你可能已经想到可以使用?.来替代很多使用&&执行空检查的代码: if(a && a.b) { } if(a?.b){ } /** * if(a?.b){ } 编译后的ES5代码 * * if( * a === null || a === ...
classFoo{bar(){constnothis=async()=>{console.log(this);// Foo, but debugger says this = undefined};nothis();consthasthis=()=>{console.log(this);// Foo};hasthis();}}exportfunctionactivate(context:vscode.ExtensionContext){constf=newFoo();f.bar();} ...
表示这个name属性有可能不存在 class A { name?: string } interface B { name?: string } 4.安全链式调用 // 这里 Error对象定义的stack是可选参数,如果这样写的话编译器会提示 // 出错 TS2532: Object is possibly 'undefined'. return new Error().stack.split('\n'); // 我们可以添加?操作符,...
class Cat { constructor() { this.meow("roar", this.sound) } meow(a, callback) { callback(a) } sound(a) { console.log(a) console.log(this.sayMeow) <--- THIS IS UNDEFINED } sayMeow() { return "Meow" } } As you can see method sayMeow() is undefined. Can you please expl...
classPerson{ // 使用 this.http 发送 HTTP 请求 constructor(privatehttp:HttpClient) {} } 1. 2. 3. 4. 5. 6. 7. 8. 在上面的例子中,Person 类接收一个 HttpClient 对象作为构造函数的参数,这个 HttpClient 对象可以用来发送 HTTP 请求。在类的实例化过程...
// 没有this.name = name 报错 } } 2、class可以不用完整传入定义的属性,传一部分也可以,未传入的以默认值或者undefined展示(ts中需要定义传入类型,未传入的用?可选符声明)。 interface IPersonTest { name : string age : number address ?: string ...
如果是箭头函数,this是初始化时就被固定了的,永远指向实例对象 如果是普通函数,那么this是可以被改变的,例如把这个方法赋予给一个变量,调用这个变量,那么this可能是undefined TS中: classMonkey{// 声明变量publicname:stringpublicage:numberconstructor(name:string, age:number) {this.name= namethis.age= age ...