GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Add new special assignment kinds for recognizing Object.defineProperty calls by weswigham · Pull Request #27208 · microsoft/TypeScript

Conversation

@weswigham

@weswigham Wesley Wigham (weswigham) commented Sep 19, 2018 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

As special property assignments in JS.

Fixes #25854
Fixes #26082
Fixes #6651

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

AbdelrahmanHafez reacted with hooray emoji
All reactions
  • 🎉 1 reaction
@weswigham
Add new special assignment kinds for recognizing Object.definePropert…
66a5531
…y calls
@weswigham
Wesley Wigham (weswigham) requested review from a user, Ryan Cavanaugh (RyanCavanaugh) and Nathan Shively-Sanders (sandersn) September 19, 2018 00:35
@sandersn

Nathan Shively-Sanders (sandersn) commented Sep 19, 2018

Copy link
Copy Markdown
Member

Does it also fix #26082 and #6651? (I have yet to read the code.)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

sandersn
Nathan Shively-Sanders (sandersn) reviewed Sep 19, 2018
View reviewed changes

@sandersn Nathan Shively-Sanders (sandersn) left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Initial comments. Most of them are nitpicky, and I haven't looked at binder or checker yet.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/compiler/utilities.ts Outdated

function getAssignmentDeclarationKindWorker(expr: BinaryExpression): AssignmentDeclarationKind {
export function isBindableObjectDefinePropertyCall(expr: CallExpression): expr is BindableObjectDefinePropertyCall {
return !(length(expr.arguments) !== 3 ||

@sandersn Nathan Shively-Sanders (sandersn) Sep 19, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

! ... !== .. || ? Why not write it as ... === ... && ?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@sandersn Nathan Shively-Sanders (sandersn) Sep 19, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, I thought you said the third one was optional? I guess we won't be able to get the type in that case, but we could still bind the property with type any.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@weswigham Wesley Wigham (weswigham) Sep 20, 2018

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not optional, it just has a few different shapes it can take.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/compiler/checker.ts Outdated
// Variables declared with 'const'
// Get accessors without matching set accessors
// Enum members
// JS Assignments with writable false or no setter

@sandersn Nathan Shively-Sanders (sandersn) Sep 19, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pedantically (since I spent a day thinking about terms), it's better to say // define-property assignments with writable false or no setter. This parallels terminology of things that are parllel, like "this-property assignments" or "prototype assignments".

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/compiler/types.ts Outdated
/** @internal */
export type BindableObjectDefinePropertyCall = CallExpression & { arguments: { 0: EntityNameExpression, 1: StringLiteralLike | NumericLiteral, 2: ObjectLiteralExpression } };


@sandersn Nathan Shively-Sanders (sandersn) Sep 19, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extra newline

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/compiler/utilities.ts Outdated
case SyntaxKind.PropertyAssignment:
return init.initializer;
case SyntaxKind.ShorthandPropertyAssignment:
case SyntaxKind.MethodDeclaration:

@sandersn Nathan Shively-Sanders (sandersn) Sep 19, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which ones are allowed to be methods? get? set? value?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@weswigham Wesley Wigham (weswigham) Sep 20, 2018

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Get and set often are. Value can be, it'd be the same as a property with a function expression value, though.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@weswigham Wesley Wigham (weswigham) Sep 20, 2018

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this function is unused in my current implementation, though.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/compiler/utilities.ts Outdated
return AssignmentDeclarationKind.None;
}
const entityName = expr.arguments[0];
if ((isIdentifier(entityName) && entityName.escapedText === "exports") || (isPropertyAccessExpression(entityName) && isIdentifier(entityName.expression) && entityName.expression.escapedText === "module" && entityName.name.escapedText === "exports")) {

@sandersn Nathan Shively-Sanders (sandersn) Sep 19, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

newline needed in here somewhere

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

weswigham reacted with heart emoji
All reactions
  • ❤️ 1 reaction
@weswigham

Wesley Wigham (weswigham) commented Sep 20, 2018

Copy link
Copy Markdown
Member Author

#6651 definitely is included here. At least for JS.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@weswigham

Wesley Wigham (weswigham) commented Sep 20, 2018

Copy link
Copy Markdown
Member Author

I think I need extra handling to cover the prototype assignment case as in Object.defineProperty(Person.prototype for #26082.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RyanCavanaugh Ryan Cavanaugh (RyanCavanaugh) added this to the TypeScript 3.2 milestone Sep 20, 2018
Wesley Wigham (weswigham) added 3 commits September 24, 2018 10:41
@weswigham
Merge branch 'master' into special-object-assignment
f91debf
@weswigham
Merge branch 'master' into special-object-assignment
a1780fe
@weswigham
Add support for prototype assignments, fix nits
66d2bb7
@weswigham

Wesley Wigham (weswigham) commented Sep 24, 2018

Copy link
Copy Markdown
Member Author

Nathan Shively-Sanders (@sandersn) I've added support for prototype property assignments.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sandersn Nathan Shively-Sanders (sandersn) self-assigned this Oct 9, 2018
sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 9, 2018
View reviewed changes
Comment thread src/compiler/binder.ts
case AssignmentDeclarationKind.None:
break; // Nothing to do
default:
return Debug.fail("Unknown call expression assignment declaration kind");

@sandersn Nathan Shively-Sanders (sandersn) Oct 9, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Debug.assertNever is better here I think.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@weswigham Wesley Wigham (weswigham) Oct 9, 2018

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assignmentKind has all the non-object-define values still "possible" (they're not, because it's a call expression and not a binary expression) and so isn't never; so not quite?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 9, 2018
View reviewed changes
Comment thread src/compiler/utilities.ts Outdated
return AssignmentDeclarationKind.None;
}
const entityName = expr.arguments[0];
if ((isIdentifier(entityName) && entityName.escapedText === "exports") ||

@sandersn Nathan Shively-Sanders (sandersn) Oct 9, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe we should have a is[Module]Exports utility since this is repeated for the ExportsProperty case below.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@weswigham Wesley Wigham (weswigham) Oct 9, 2018

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hilariously enough, 10 lines up we already have one, with exactly what i was going to name it.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 9, 2018
View reviewed changes
Comment thread src/compiler/checker.ts
function getInitializerTypeFromAssignmentDeclaration(symbol: Symbol, resolvedSymbol: Symbol | undefined, expression: BinaryExpression | CallExpression, kind: AssignmentDeclarationKind) {
if (isCallExpression(expression)) {
if (resolvedSymbol) {
return getTypeOfSymbol(resolvedSymbol); // This shouldn't happen except under some hopefully forbidden merges of export assignments and object define assignments

@sandersn Nathan Shively-Sanders (sandersn) Oct 9, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there a test for this case?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@weswigham Wesley Wigham (weswigham) Oct 10, 2018

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK I can't construct something that can actually hit this codepath currently (since something like Object.defineProperty(module, "exports", { value: "no" }) won't be bound to the module in the first place); but I wanna avoid crashing and burning if we change something, and this seems reasonable (ignoring the reassignment). I'll add a test with similar content that could trigger it if we ever do start binding it a bit differently, though.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 9, 2018
View reviewed changes
Comment thread src/compiler/checker.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 9, 2018
View reviewed changes
Comment thread src/compiler/checker.ts
isObjectLiteralExpression(container.parent.parent) &&
isCallExpression(container.parent.parent.parent) &&
container.parent.parent.parent.arguments[2] === container.parent.parent &&
getAssignmentDeclarationKind(container.parent.parent.parent) === AssignmentDeclarationKind.ObjectDefinePrototypeProperty) {

@sandersn Nathan Shively-Sanders (sandersn) Oct 9, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(this applies to all the cases in this function) Would it be possible, and more efficient, to just check that parent x 3 exists and then just check the result of getAssignmentDeclarationKind? I think the rest of the predicate is duplicated with it.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@weswigham Wesley Wigham (weswigham) Oct 10, 2018

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not quite - these are actually some extra constraints which ask that the third argument be specifically an object literal (rather than anything we might be able to pull a type from), to inject a this type into the method defined in it, even if Object.defineProperty's signature lacks a strong this (and, in fact, it does lack one).

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 9, 2018
View reviewed changes
Comment thread src/compiler/checker.ts Outdated
case AssignmentDeclarationKind.ObjectDefinePropertyValue:
case AssignmentDeclarationKind.ObjectDefinePropertyExports:
case AssignmentDeclarationKind.ObjectDefinePrototypeProperty:
return Debug.fail("Unimplemented");

@sandersn Nathan Shively-Sanders (sandersn) Oct 9, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Not yet implemented" or "Does not apply"? Isn't it the latter?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@weswigham Wesley Wigham (weswigham) Oct 9, 2018

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, definitely the later.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 9, 2018
View reviewed changes
Comment thread src/compiler/checker.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

sandersn
Nathan Shively-Sanders (sandersn) requested changes Oct 9, 2018
View reviewed changes

@sandersn Nathan Shively-Sanders (sandersn) left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some questions and suggestions, plus I need to look at the tests.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@sandersn

Nathan Shively-Sanders (sandersn) commented Oct 10, 2018

Copy link
Copy Markdown
Member

Can you see what happens with the user tests? (and maybe RWC, although I don't think there's much JS there.)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 10, 2018
View reviewed changes
Comment thread tests/baselines/reference/checkExportsObjectAssignProperty.errors.txt Resolved

Uh oh!

There was an error while loading. Please reload this page.

sandersn
Nathan Shively-Sanders (sandersn) reviewed Oct 10, 2018
View reviewed changes
Comment thread tests/baselines/reference/checkObjectDefineProperty.errors.txt

==== tests/cases/conformance/jsdoc/index.js (0 errors) ====
const x = {};
Object.defineProperty(x, "name", { value: "Charles", writable: true });

@sandersn Nathan Shively-Sanders (sandersn) Oct 10, 2018

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should have a value test that leaves off writable, if that's allowed. Actually, you should have a test with value left out too. And maybe a test with some of the properties we don't care about?

Also a test with non-literals, just in case that hurts our ... error reporting or something?

According to MDN's Object.defineProperty page, we should have an error if both get/set and value are present. I didn't see a test for that either.

Also, who spells 'writeable' as 'writable'?
Later:everybody else, it turns out.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

weswigham reacted with heart emoji
All reactions
  • ❤️ 1 reaction
@weswigham
Fix code review comments
01589fb
@weswigham

Wesley Wigham (weswigham) commented Oct 10, 2018

Copy link
Copy Markdown
Member Author

Nathan Shively-Sanders (@sandersn) I've replied to or addressed all of your comments; how'd you feel about this now?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sandersn

Nathan Shively-Sanders (sandersn) commented Oct 11, 2018 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Looks good except for four things:

  1. A test that has an initialiser that is just a variable, not some literal.
  2. A test that has a property name that is a variable of type string. (It shouldn’t result in a property, right?)
  3. A test that has a property name that is a variable with constant value, if the behaviour is different than 2.
  4. An error for when you have both value and get+set, or neither.
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@weswigham

Wesley Wigham (weswigham) commented Oct 11, 2018

Copy link
Copy Markdown
Member Author

An error for when you have both value and get+set, or neither

The function is still typechecked as a function call, so that aughta still be happening provided the lib definition is written such that the argument is a union (it isn't, it uses a single weak type).

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sandersn

Nathan Shively-Sanders (sandersn) commented Oct 11, 2018

Copy link
Copy Markdown
Member

OK, then I guess we should consider changing it afterward. It would probably break some code, though.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sandersn

Nathan Shively-Sanders (sandersn) commented Oct 19, 2018

Copy link
Copy Markdown
Member

Wesley Wigham (@weswigham) It would be nice to get this one in. Will you have time to add those tests some time?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@weswigham

Wesley Wigham (weswigham) commented Oct 19, 2018

Copy link
Copy Markdown
Member Author

Yeah, I'll take some time to add them today.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Wesley Wigham (weswigham) added 2 commits October 19, 2018 10:54
@weswigham
Merge branch 'master' into special-object-assignment
71e8d8c
@weswigham
Add test documenting behavior in a few more odd scenarios
8da77c6
@weswigham

Wesley Wigham (weswigham) commented Oct 19, 2018

Copy link
Copy Markdown
Member Author

Nathan Shively-Sanders (@sandersn) done

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

sandersn
Nathan Shively-Sanders (sandersn) approved these changes Oct 19, 2018
View reviewed changes
@weswigham
Wesley Wigham (weswigham) merged commit 69b1cb5 into microsoft:master Oct 19, 2018
@weswigham
Wesley Wigham (weswigham) deleted the special-object-assignment branch October 19, 2018 21:32
@weswigham Wesley Wigham (weswigham) mentioned this pull request Nov 6, 2018
Javascript should support defineProperty assignments to exports #22439
Closed
@quantizor

Evan Jacobs (quantizor) commented Apr 8, 2020

Copy link
Copy Markdown

Sorry to comment on a long closed issue, but is this also implemented for Object.defineProperties? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties

tehhowch, treardon17, and khooz reacted with thumbs up emoji
All reactions
  • 👍 3 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@weswigham

Wesley Wigham (weswigham) commented Apr 8, 2020

Copy link
Copy Markdown
Member Author

Nope.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@calvintwr

calvintwr commented Aug 15, 2021

Copy link
Copy Markdown

Does this still work? It's not for me in VScode:

Version: 1.59.0
Commit: 379476f0e13988d90fab105c5c19e7abc8b1dea8
Date: 2021-08-04T23:14:40.191Z
Electron: 13.1.7
Chrome: 91.0.4472.124
Node.js: 14.16.0
V8: 9.1.269.36-electron.0
OS: Darwin x64 19.6.0

Suppose the following code:

test.ts:

const something = {
    somethingValue: 'test'
}
Object.defineProperty(something, 'definedProperty', {
    value: 'hello'
})
export default something

test2.ts:

import Thing from './test'

Thing.somethingValue // this is okay
Thing.definedProperty // this will have red curly underline

So why does Thing.definedProperty have red curlies? Wesley Wigham (@weswigham) Nathan Shively-Sanders (@sandersn)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@weswigham

Wesley Wigham (weswigham) commented Aug 15, 2021

Copy link
Copy Markdown
Member Author

We only recognize them in .js files, not .ts.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@calvintwr

calvintwr commented Aug 15, 2021 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

I see. But because it wasn't working in JS, that's why I converted it to TS to see if it works.

I reverted the files to JS, and the screenshot below shows that it wasn't able to see the property defined using #defineProperty:

Screenshot 2021-08-16 at 1 33 19 AM

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@enricoangelon

Enrico Angelon (enricoangelon) commented Nov 27, 2021

Copy link
Copy Markdown

We only recognize them in .js files, not .ts.

I think it's time for a .ts implementation too!

calvintwr, MichaelTheriot, and riflowth reacted with thumbs up emoji
All reactions
  • 👍 3 reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@AR0x7E7

Alexander Rau (AR0x7E7) commented Apr 2, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

using Visual Studio Code 1.66.0 I can confirm that Object.defineProperty appears to be not recognized
Unbenannt

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@microsoft Microsoft (microsoft) locked as resolved and limited conversation to collaborators Oct 21, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Reviewers

@sandersn Nathan Shively-Sanders (sandersn) sandersn approved these changes
@RyanCavanaugh Ryan Cavanaugh (RyanCavanaugh) Awaiting requested review from RyanCavanaugh

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@sandersn Nathan Shively-Sanders (sandersn)

Labels

None yet

Projects

None yet

Milestone

TypeScript 3.2

Development

Successfully merging this pull request may close these issues.

JavaScript IntelliSense Should Recognize DefineProperty Types are not imported properly for packages that use exports.default. Salsa does not discover properties defined with Object.defineProperty

Uh oh!

There was an error while loading. Please reload this page.

7 participants

@weswigham @sandersn @quantizor @calvintwr @enricoangelon @AR0x7E7 @RyanCavanaugh
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.