Microsoft/TypeScript

Union of functions with typed `this`, fails with no parameters

開放

#41,213 建立於 2020年10月23日

 (3 則留言) (2 個反應) (0 位負責人)TypeScript (13,395 個分叉)batch import
BugDomain: This-TypingHelp Wanted

倉庫指標

星標
 (108,860 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

TypeScript Version: 4.0.2

Code

interface Context {
  hello: boolean
}

type OptionsTest =
      | ((this: Context) => void)
      | ((this: Context) => PromiseLike<any>)
      | ((this: Context, done: boolean) => void)

function container (test: OptionsTest) {

}

// This does not work!

container(function () {
  console.log(this.hello);
})

// This works!

container(function (done) {
  console.log(this.hello);
})

// This works!

type Single = (this: Context) => void;
function SingleContainer (test: Single) {}
SingleContainer(function () {
  console.log(this.hello)
})

Expected behavior:

Correctly provide this type to (typed union) functions without arguments.

Actual behavior:

No this type is being provided for functions without arguments.

Playground Link

StackOverflow Link

Search Terms

  • contextually typed
  • this parameter
  • union of functions

貢獻者指南