[TypeScript] 이것은 내장된 구성 요소를 가리킵니다.

TypeScript는 이 유형을 추론할 수 있습니다.

함수에서 this의 기본 유형

이것은 객체의 함수에 있습니다
// 对象中的this
const obj ={
    
    
   a:1,
   b:2,
   fun:function(){
    
    
      //默认情况下,this是any类型
      console.log(this.a)
   }
}
obj.fun()//1
분명히 이것은 다음을 가리킨다.
  • 1단계: tsc --init, makefile
    여기에 이미지 설명을 삽입하세요
  • 2단계, 노트 열기
  • 이것을 모호하게 두지 마십시오. 이것을 가리키도록 지정해야 합니다.
    여기에 이미지 설명을 삽입하세요
  • 이것은 더 엄격해질 것입니다. 이것은 문맥에 따라 이것 자체로 추론되는 유형입니다.
    여기에 이미지 설명을 삽입하세요
  • 이것은 맥락이 없습니다. 파생할 수 없는 경우 엄격 모드에서는 이를 흐리게 하는 것이 허용되지 않으므로 오류가 보고됩니다.
    여기에 이미지 설명을 삽입하세요

이 유형을 지정하는 방법

  • 함수의 첫 번째 매개변수는 나중에 호출되는 함수의 상황에 따라 this의 유형을 선언하는 데 사용될 수 있습니다.
  • 함수에 대한 후속 호출에서 매개변수를 전달할 때. 두 번째 매개변수를 전달하면 이 매개변수는 컴파일 후에 삭제됩니다.
// - 把this作为函数的第一个参数,给指定类型
function fun( this:{
    
    name:string},info:{
    
    name:string}){
    
    
   console.log(this)//{ name: '名字' }
}
//调用的时候,得这样调用,不然会报void类型的错误
fun.call({
    
    name:"名字"},{
    
    name:"第二个名字"})

이 관련 내장 도구

유형 변환

  • TS는 일반적인 유형 변환을 지원하는 몇 가지 도구를 제공하며 이러한 유형은 전 세계적으로 사용 가능합니다.
이매개변수 유형<>
  • 이는 함수 유형을 추출하는 데 사용됩니다.
  • 이것이 없으면 알 수 없는 결과가 반환됩니다.
이매개변수 유형<>
  • 함수 유형 유형의 이 매개변수 유형을 제거하고 현재 함수 유형을 반환하고 싶습니다.
function fun( this:{
    
    name:string},info:{
    
    name:string}){
    
    
   console.log(this)
}
//获取函数的类型
type funtype = typeof fun
//想要直接获取函数的this类型,采用内置组件
type thisType= ThisParameterType<funtype>
//想要移除一个函数类型type的this参数类型,并且返回当前剩余的函数类型
type thisRemove= OmitThisParameter<funtype>

export{
    
    }
이 유형
  • 이 유형의 컨텍스트를 표시하는 데 사용됩니다.
  • 원래 방법
//原始获取this,繁琐
type User = {
    
    
   name: string
   age: number
}
type Intype = {
    
    
   User: User
   getname: () => void
   getage: () => void
}
const username: Intype = {
    
    
   User: {
    
    
      name: "乞力马扎罗",
      age: 18
   },
   //ts接收指定的this指向
   getname: function (this:User) {
    
    
      console.log(this.name)//乞力马扎罗
   },
   getage: function (this:User) {
    
    
      console.log(this.age)//18
   }
   
}
//call() 可以修改函数调用时 this 的指向,其余参数则会作为原函数的参数。
//第一个参数 thisArg。代表 this 将会被指向的值。如果不是对象,也会通过 Object() 方法转换为对象。如果是 null 或 undefined,this 则会指向全局对象(即 window 或 global)
//传入this指向
username.getname.call(username.User)
username.getage.call(username.User)
export {
    
     }
  • 이 유형을 선택하세요<>
type User = {
    
    
   name: string
   age: number
}
type Intype = {
    
    
   User: User
   getname: () => void
   getage: () => void
}
//通过ThisType<User>,将这里以后不管多少函数,this的指向始终是User
const username: Intype & ThisType<User> = {
    
    
   User: {
    
    
      name: "乞力马扎罗",
      age: 18
   },
   //ts接收指定的this指向
   getname: function () {
    
    
      console.log(this.name)//乞力马扎罗
   },
   getage: function () {
    
    
      console.log(this.age)//18
   }

}
//call() 可以修改函数调用时 this 的指向,其余参数则会作为原函数的参数。
//第一个参数 thisArg。代表 this 将会被指向的值。如果不是对象,也会通过 Object() 方法转换为对象。如果是 null 或 undefined,this 则会指向全局对象(即 window 或 global)
//传入this指向
username.getname.call(username.User)
username.getage.call(username.User)
export {
    
     }

Supongo que te gusta

Origin blog.csdn.net/weixin_44899940/article/details/132244531
Recomendado
Clasificación