Effect CommunityEC
Effect Community10mo ago
6 replies
Aleks M

Implicit `this` Type in Generic Interface

Accidentally discovered implicit
this
type working on an generic interface
type GiveMeName<T> = T extends A<infer Name> ? `${Name} goes brrr` : never

export interface A<Name extends string> {
  name: Name
  
  goBrrr(who: GiveMeName<this>): string
}

declare const a: A<'Aleks'>
a.goBrrr(`Aleks goes brrr`) // Is fine
a.goBrrr(`SpanchBob goes brrr`) // Is not

was it just me?

https://www.typescriptlang.org/play/?#code/C4TwDgpgBA4glgNwgWQgOQIYFsIB4AqAfFALxT5QQAewEAdgCYDOUAgrnHQGYQBOUmHMQD8UAAYASAN6CIAXygBzAPYQWAI15axUAFxQ6EJLwCwAKHPUwy3sCidavLhgDG0drMo16zKE2C8nIrEUuZQBtgQ+rJhULEqAEJavAAUAO4AFsr68EiosrjAGXBMhACU+v6BdIrmcubmDBAuADYYvNAuynT+UBj67ADkrC0QANZMg4TmGAB0ickpYiPjLCpqUJraZVAA9LtQAJIsXJwQM-PKSVpLAMpgGHQuGQnK6kqqGsliO-tHLHRlMAgA
Was this page helpful?