René's URL Explorer Experiment


Title: [Suggestion] Override and identifier! for Mapped Type and extend interface · Issue #18567 · microsoft/TypeScript · GitHub

Open Graph Title: [Suggestion] Override and identifier! for Mapped Type and extend interface · Issue #18567 · microsoft/TypeScript

X Title: [Suggestion] Override and identifier! for Mapped Type and extend interface · Issue #18567 · microsoft/TypeScript

Description: TypeScript Version: 2.4.0 / nightly (2.5.0-dev.201xxxxx) 2.5.2 Situation There are lots of demand of more flexibility to Mapped Type. For example: Extend from a type and override some fields Turn optional field to required Only make some...

Open Graph Description: TypeScript Version: 2.4.0 / nightly (2.5.0-dev.201xxxxx) 2.5.2 Situation There are lots of demand of more flexibility to Mapped Type. For example: Extend from a type and override some fields Turn o...

X Description: TypeScript Version: 2.4.0 / nightly (2.5.0-dev.201xxxxx) 2.5.2 Situation There are lots of demand of more flexibility to Mapped Type. For example: Extend from a type and override some fields Turn o...

Opengraph URL: https://github.com/microsoft/TypeScript/issues/18567

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Suggestion] Override and identifier! for Mapped Type and extend interface","articleBody":"\u003c!-- BUGS: Please use this template. --\u003e\r\n\u003c!-- QUESTIONS: This is not a general support forum! Ask Qs at http://stackoverflow.com/questions/tagged/typescript --\u003e\r\n\u003c!-- SUGGESTIONS: See https://github.com/Microsoft/TypeScript-wiki/blob/master/Writing-Good-Design-Proposals.md --\u003e\r\n\r\n**TypeScript Version:**  2.4.0 / nightly (2.5.0-dev.201xxxxx)\r\n2.5.2\r\n\r\n**Situation**\r\nThere are lots of demand of more flexibility to Mapped Type. For example:\r\n1. Extend from a type and override some fields\r\n1. Turn optional field to required\r\n1. Only make some specific fields to optional\r\n\r\n**Suggestion**\r\n1. **Support multiple field definition in one type, the latter definition (same fields) will overwrite the previous**\r\n1. **Support identifier! for type definition which will remove `null` and `undefined`.**\r\n\r\n**Code**\r\n\r\n```ts\r\ntype Full = {\r\n  field1: string;\r\n  field2: string;\r\n  ....\r\n  fieldN: string;\r\n}\r\n\r\n//Suggestion 1: Multiple fields in type definition and support override\r\ntype SomeOptional = {\r\n  [P in keyof Full]: Full[P];  // extends\r\n  [P in 'field1' | 'field2']? : Full[P];  // override field1 and field2 to optional\r\n  xxx: string;  // and can add more fields.\r\n}\r\n\r\n//Suggestion 2: Identifer! to remove null and undefined\r\ntype SomeRequired = {\r\n  [P in keyof SomeOptional]: SomeOptional[P];  // extends\r\n  field1: SomeOptional[field1]!;  // ! will remove null and undefined from a type\r\n}\r\n```\r\n\r\n**Benifit**\r\n1. It can resolve most problem with required and optional in current open issues. (like #15012, #16173, #13224, #12578, )\r\n2. More flexible to extend and override, in limited complexity.\r\n\r\n\r\nBTW, `function getProperty` in #12578 is a solution, but it cannot be used in declaration files.(`.d.ts`)","author":{"url":"https://github.com/k8w","@type":"Person","name":"k8w"},"datePublished":"2017-09-19T05:53:57.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/18567/TypeScript/issues/18567"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:5944ea4a-179d-9147-77b0-b133f1fda521
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idC11A:179354:A555F6:DFA5E3:6A62EFE3
html-safe-nonce79496d3f48d2b1cd5fd5219ae67c36a36578769b92b7955398fd3d0b89d1aca3
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMTFBOjE3OTM1NDpBNTU1RjY6REZBNUUzOjZBNjJFRkUzIiwidmlzaXRvcl9pZCI6IjYwMzkxMjg1Nzg5OTQyOTg2MCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac9efbd39f3d6417f5369fc71a245e2c054118992d052169900436a32dabe9de9c
hovercard-subject-tagissue:258704112
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/microsoft/TypeScript/18567/issue_layout
twitter:imagehttps://opengraph.githubassets.com/2c1fcd8f19acf4f4e15f55309c2c89eb3cfe16eddfa118f1d61117a4d62e4744/microsoft/TypeScript/issues/18567
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/2c1fcd8f19acf4f4e15f55309c2c89eb3cfe16eddfa118f1d61117a4d62e4744/microsoft/TypeScript/issues/18567
og:image:altTypeScript Version: 2.4.0 / nightly (2.5.0-dev.201xxxxx) 2.5.2 Situation There are lots of demand of more flexibility to Mapped Type. For example: Extend from a type and override some fields Turn o...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamek8w
hostnamegithub.com
expected-hostnamegithub.com
Noneb415018e190e73858133ddcaa36acce7b3f3572fe54dda84bd3b21a6ec714c30
turbo-cache-controlno-preview
go-importgithub.com/microsoft/TypeScript git https://github.com/microsoft/TypeScript.git
octolytics-dimension-user_id6154722
octolytics-dimension-user_loginmicrosoft
octolytics-dimension-repository_id20929025
octolytics-dimension-repository_nwomicrosoft/TypeScript
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id20929025
octolytics-dimension-repository_network_root_nwomicrosoft/TypeScript
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release22f98521e99f504294ab0812b66104d50eb75a70
ui-targetcanary-1
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/microsoft/TypeScript/issues/18567#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FTypeScript%2Fissues%2F18567
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
Code QualityEnforce quality at mergehttps://github.com/features/code-quality
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmicrosoft%2FTypeScript%2Fissues%2F18567
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=microsoft%2FTypeScript
Reloadhttps://github.com/microsoft/TypeScript/issues/18567
Reloadhttps://github.com/microsoft/TypeScript/issues/18567
Reloadhttps://github.com/microsoft/TypeScript/issues/18567
Please reload this pagehttps://github.com/microsoft/TypeScript/issues/18567
microsoft https://github.com/microsoft
TypeScripthttps://github.com/microsoft/TypeScript
Notifications https://github.com/login?return_to=%2Fmicrosoft%2FTypeScript
Fork 13.6k https://github.com/login?return_to=%2Fmicrosoft%2FTypeScript
Star 110k https://github.com/login?return_to=%2Fmicrosoft%2FTypeScript
Code https://github.com/microsoft/TypeScript
Issues 5k+ https://github.com/microsoft/TypeScript/issues
Pull requests 21 https://github.com/microsoft/TypeScript/pulls
Actions https://github.com/microsoft/TypeScript/actions
Projects https://github.com/microsoft/TypeScript/projects
Models https://github.com/microsoft/TypeScript/models
Wiki https://github.com/microsoft/TypeScript/wiki
Security and quality 0 https://github.com/microsoft/TypeScript/security
Insights https://github.com/microsoft/TypeScript/pulse
Code https://github.com/microsoft/TypeScript
Issues https://github.com/microsoft/TypeScript/issues
Pull requests https://github.com/microsoft/TypeScript/pulls
Actions https://github.com/microsoft/TypeScript/actions
Projects https://github.com/microsoft/TypeScript/projects
Models https://github.com/microsoft/TypeScript/models
Wiki https://github.com/microsoft/TypeScript/wiki
Security and quality https://github.com/microsoft/TypeScript/security
Insights https://github.com/microsoft/TypeScript/pulse
[Suggestion] Override and identifier! for Mapped Type and extend interfacehttps://github.com/microsoft/TypeScript/issues/18567#top
QuestionAn issue which isn't directly actionable in codehttps://github.com/microsoft/TypeScript/issues?q=state%3Aopen%20label%3A%22Question%22
https://github.com/k8w
k8whttps://github.com/k8w
on Sep 19, 2017https://github.com/microsoft/TypeScript/issues/18567#issue-258704112
Add a new type Required #15012https://github.com/microsoft/TypeScript/issues/15012
Type to invert optionality of properties #16173https://github.com/microsoft/TypeScript/issues/16173
Mapped type optional -> required property issue #13224https://github.com/microsoft/TypeScript/issues/13224
Is this possible? Opposite of Partial Type #12578https://github.com/microsoft/TypeScript/issues/12578
#12578https://github.com/microsoft/TypeScript/issues/12578
QuestionAn issue which isn't directly actionable in codehttps://github.com/microsoft/TypeScript/issues?q=state%3Aopen%20label%3A%22Question%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.