Skip to content

Commit 74c3986

Browse files
committed
docs(leetcode/20): use Object.prototype.hasOwnProperty.call in TypeScript isOpeningBracket to prevent prototype property matches
1 parent 4b29aa4 commit 74c3986

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

Algorithm/BinarySearch/leetcode/20. Valid Parentheses/claude sonnet 5/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ const CLOSING_BRACKET_LIST: readonly ClosingBracket[] = [')', ']', '}'];
411411
// 型ガード関数:戻り値の型を `char is OpeningBracket` にすることで、
412412
// この関数が true を返した後、TypeScript が引数の型を自動的に絞り込んでくれる。
413413
function isOpeningBracket(char: string): char is OpeningBracket {
414-
return char in CLOSING_BRACKETS;
414+
return Object.prototype.hasOwnProperty.call(CLOSING_BRACKETS, char);
415415
}
416416
417417
function isClosingBracket(char: string): char is ClosingBracket {

Algorithm/BinarySearch/leetcode/20. Valid Parentheses/claude sonnet 5/Valid_Parentheses_Typescript.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,9 @@ const CLOSING_BRACKET_LIST: readonly ClosingBracket[] = [')', ']', '}'];
130130
// この関数が true を返した後、TypeScriptが char の型を
131131
// 自動的に絞り込んでくれる(型の絞り込み=Type Narrowing)。
132132
function isOpeningBracket(char: string): char is OpeningBracket {
133-
// Object.prototype.hasOwnProperty を直接呼ぶより
134-
// in 演算子を使う方がシンプルで意図が明確になる
135-
return char in CLOSING_BRACKETS;
133+
// in 演算子ではなく hasOwnProperty を使い
134+
// プロトタイプ鎖の継承プロパティ(toString等)の誤判定を防ぐ
135+
return Object.prototype.hasOwnProperty.call(CLOSING_BRACKETS, char);
136136
}
137137

138138
// 「閉じ括弧かどうか」を判定する型ガード関数。

0 commit comments

Comments
 (0)