Giter Club home page Giter Club logo

Comments (7)

RyanCavanaugh avatar RyanCavanaugh commented on May 7, 2024 4

Rare MartinJohns L 😅

Anyway I just updated the FAQ with a new entry about method bivariance; see https://github.com/microsoft/TypeScript/wiki/FAQ#why-method-bivariance

from typescript.

nmain avatar nmain commented on May 7, 2024 2

That's not quite the right part of that document, see https://github.com/microsoft/TypeScript/wiki/FAQ#:~:text=A%20method%20and%20a%20function%20property%20of%20the%20same%20type%20behave%20differently.

from typescript.

MartinJohns avatar MartinJohns commented on May 7, 2024 1

@RyanCavanaugh The new FAQ is missing a TOC, that threw me off and made finding things a lot harder.

from typescript.

MartinJohns avatar MartinJohns commented on May 7, 2024

This is working as intended and mentioned in the FAQ: https://github.com/microsoft/TypeScript/wiki/FAQ#parameter-arity-variance-is-correct

from typescript.

CComparon avatar CComparon commented on May 7, 2024

Thank you @MartinJohns for your quick reply.
I'm confused though, as my case is not about difference in arity but rather in the actual type of a positional method argument.
My apologies if I'm still overlooking a by-design behavior.

from typescript.

BayanBennett avatar BayanBennett commented on May 7, 2024

ℹī¸ @CComparon it works as you expect if you use the property syntax for class methods

class B {
  f = (a: number) => {}
}

class C { // same result when using an interface
  f = (a: number | string) => {}
}

async function main(): Promise<void> {
  const b: C = new B(); // Error: Type 'B' is not assignable to type 'C'... Type 'string' is not assignable to type 'number'.
  console.log(b.f(5));
  console.log(b.f("5"));
}

TS Playground

from typescript.

CComparon avatar CComparon commented on May 7, 2024

Thanks both for pointing me to the rationale behind this language tradeoff.
Cheers

from typescript.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤ī¸ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.