mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 08:11:30 -06:00
Don't emit binding pattern pattern / optional parameter error when an initializer is present (#52880)
This commit is contained in:
parent
27376f1577
commit
ef79b42b57
@ -37648,7 +37648,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
|
||||
error(node.name, Diagnostics.constructor_cannot_be_used_as_a_parameter_property_name);
|
||||
}
|
||||
}
|
||||
if ((node.questionToken || isJSDocOptionalParameter(node)) && isBindingPattern(node.name) && (func as FunctionLikeDeclaration).body) {
|
||||
if (!node.initializer && isOptionalDeclaration(node) && isBindingPattern(node.name) && (func as FunctionLikeDeclaration).body) {
|
||||
error(node, Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature);
|
||||
}
|
||||
if (node.name && isIdentifier(node.name) && (node.name.escapedText === "this" || node.name.escapedText === "new")) {
|
||||
|
||||
12
tests/baselines/reference/optionalBindingParameters4.symbols
Normal file
12
tests/baselines/reference/optionalBindingParameters4.symbols
Normal file
@ -0,0 +1,12 @@
|
||||
=== /a.js ===
|
||||
/**
|
||||
* @param {{ cause?: string }} [options]
|
||||
*/
|
||||
function foo({ cause } = {}) {
|
||||
>foo : Symbol(foo, Decl(a.js, 0, 0))
|
||||
>cause : Symbol(cause, Decl(a.js, 3, 14))
|
||||
|
||||
return cause;
|
||||
>cause : Symbol(cause, Decl(a.js, 3, 14))
|
||||
}
|
||||
|
||||
13
tests/baselines/reference/optionalBindingParameters4.types
Normal file
13
tests/baselines/reference/optionalBindingParameters4.types
Normal file
@ -0,0 +1,13 @@
|
||||
=== /a.js ===
|
||||
/**
|
||||
* @param {{ cause?: string }} [options]
|
||||
*/
|
||||
function foo({ cause } = {}) {
|
||||
>foo : ({ cause }?: { cause?: string;}) => string
|
||||
>cause : string
|
||||
>{} : {}
|
||||
|
||||
return cause;
|
||||
>cause : string
|
||||
}
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
// @checkJs: true
|
||||
// @allowJs: true
|
||||
// @noEmit: true
|
||||
// @filename: /a.js
|
||||
|
||||
/**
|
||||
* @param {{ cause?: string }} [options]
|
||||
*/
|
||||
function foo({ cause } = {}) {
|
||||
return cause;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user