GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||
GeezerVison is showing github.com — Variant accessors by RyanCavanaugh · Pull Request #42425 · microsoft/TypeScript Conversation
|
|
TypeScript Bot (@typescript-bot) pack this |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Heya Ryan Cavanaugh (@RyanCavanaugh), I've started to run the tarball bundle task on this PR at 6f09705. You can monitor the build here. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Hey Ryan Cavanaugh (@RyanCavanaugh), I've packed this into an installable tgz. You can install it for testing by referencing it in your and then running There is also a playground for this build and an npm module you can use via |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
TypeScript Bot (@typescript-bot) pack this |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Heya Ryan Cavanaugh (@RyanCavanaugh), I've started to run the tarball bundle task on this PR at d2affa2. You can monitor the build here. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Hey Ryan Cavanaugh (@RyanCavanaugh), I've packed this into an installable tgz. You can install it for testing by referencing it in your and then running There is also a playground for this build and an npm module you can use via |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
This probably also fixes #32821 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
What milestone will this go into? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…ariant accessor types in TypeScript This make accessors have the correct types to represent all possible values that they can be set to, but the getters are funky because to use them it requires type casting. As a temporary workaround, `get*()` methods have been added (f.e. `element.getPosition()` returns the same as `element.position` but with the value casted to the underlying object type. This does not impact JavaScript users. They can continue to do things like `element.position.x = 123`. But TypeScript users can't do that. They would have to write `;(element.position as XYZNumberValues).x = 123` which is cumbersome, but the temporary getter methods allow TypeScript users to write `element.getPosition().x = 123` instead. TypeScript users can still set values as usual: `this.position = [1, 2, 3]` just like JavaScript users. The upcoming changes in microsoft/TypeScript#42425 will allow us to update the getter types so TypeScript users can write `element.position.x = 123`.
d2affa2 to
b7f93bb
Compare
|
TypeScript Bot (@typescript-bot) pack this |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Heya Ryan Cavanaugh (@RyanCavanaugh), I've started to run the tarball bundle task on this PR at b7f93bb. You can monitor the build here. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Hey Ryan Cavanaugh (@RyanCavanaugh), I've packed this into an installable tgz. You can install it for testing by referencing it in your and then running There is also a playground for this build and an npm module you can use via |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
# Conflicts: # src/compiler/checker.ts # src/compiler/diagnosticMessages.json # tests/baselines/reference/privateNamesAndGenericClasses-2.errors.txt
This will depend on microsoft/TypeScript#42425 landing in stable TypeScript so we can update the types to reflect it.
|
TypeScript Bot (@typescript-bot) pack this |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
What's the syntax (if supported) for generic types? type MarkAsString<T extends Record<string, any>> = { [K in keyof T]: T extends number ? T[K] /* How to set add a string|number set here? */ : T[K] } declare const a: MarkAsString<{ a: boolean, b: number, c: string }> a.b = '42'; // I want to have this avalible a.c = '112' // @ts-expect-error a.a = '2' Actual use caseIn Vue3 there's const r = ref({ a: 1} ) r.value.a = 1 const a = reactive(r) a.a // 1 On a const r = ref({a:1}); const a = ref({ r }) // results in `{ r: { a: 1 } }` a.r = r; // typescript error because `r` is `Ref<T>` instead of `UnwrappedRef<T>`, but it works at runtime. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
I think what you're actually looking for is how to use the new feature with index signatures. My first guess would have been something like but that doesn't work on the latest Playground for this build. Maybe it's not currently possible? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Yeah, that's a totally separate and additional feature. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Cool, should I open an issue? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Sure |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
This is very cool, is there any information on which version will have this change? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Dmitry Shamshurin (@V1raNi) This has been shipped in 4.3 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-3.html#separate-write-types-on-properties |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
The different type for setter doesn't work for Union type as well. Is this expected? Example can be found here |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Wei (@ws93) I didn't see an issue for that yet so I went ahead and opened #45376 . |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Oh, thank you very much. It's just I was interested in different visibility and couldn't find it in the text, and the docs seem to be outdated a bit regarding this part. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.