5 ms·
That’s barely scratching the surface. In TypeScript the following is also valid: class Something{ value: Number } class SomethingElse{ value: Numb
by clownstrikelol 6mo ago
That’s barely scratching the surface.
In TypeScript the following is also valid:
class Something{
value: Number
}
class SomethingElse{
value: Number
foo: String
bar: SomeOtherThing[]
}
function AddSomething(v: Something)
{
v.value += 1;
}
var ex = new SomethingElse{
value: 3,
foo: “TypeScript is fake types”,
bar: []
};
AddSomething(ex);
Why does it work? Because in TypeScript as long as you have a “shape” that fits, it’s the “same type.”
Complete and utter insanity to me, to pretend there’s any real type checking, when types are entirely fake and made up.
- saghm 6mo agoThat's because it's structurally typed (as opposed to nominally typed). I don't happen to prefer it, but I don't think it's fair to conflate that with unsoundness like the example given above; it's totally possible to have a sound structural type system. TypeScript doesn't happen to be sound, but it's not because of that.
- teaearlgraycold 6mo agoStructural typing is great. It's the verified version of duck typing.
- LelouBil 6mo agoYou can even get nominal typing with branded types if you need it. (Like for the newtype pattern)