In địa chỉ bộ nhớ của một biến đôi khi hữu ích cho việc gỡ lỗi. Đây là tất cả các cách để lấy giá trị này trong Go
Cách chuyển đến các thẻ trợ giúp trong Vim
Chuyển đến một thẻ dưới con trỏ trong cửa sổ tài liệu Vim [. help] được thực hiện thông qua liên kết phím `Ctrl-]`
Cách xác minh tính hợp lệ của chuỗi JSON trong Go
Nếu bạn đang tìm cách xác minh xem một chuỗi có phải là JSON hợp lệ trong Go bất kể lược đồ của nó hay không, thì bạn đã bao gồm gói `encoding/json`
Cách chuyển hướng đến một URL trong Go
Gói http trong Go cho phép bạn tạo một máy chủ HTTP để nhận các yêu cầu HTTP và chuyển hướng máy khách đến một URL khác
Cập nhật ngày 1 tháng 12 năm 2022
Cách sửa thuộc tính không tồn tại trên EventTarget trong TypeScriptMột lỗi phổ biến xảy ra khi làm việc với DOM trong TypeScript là "thuộc tính 'tên thuộc tính' không tồn tại trên EventTarget
". Lỗi này xảy ra khi bạn cố truy cập một thuộc tính trên mục tiêu sự kiện trong TypeScript
Property 'value' does not exist on type 'EventTarget'.
Đây là một ví dụ về đoạn mã gây ra lỗi này
mục lục. tsfunction handleClick[event: Event] {
const { target } = event
console.log[target.value];
}
const button = document.querySelector['button'];
if [button] {
button.addEventListener['click', handleClick];
}
Kiểm tra mã này trên
Nếu bạn biên dịch đoạn mã trên, trình biên dịch sẽ phát ra hai lỗi
target
có thể lànull
- Thuộc tính
0 không tồn tại trên loạifunction handleClick[event: Event] { const { target } = event console.log[target.value]; } const button = document.querySelector['button']; if [button] { button.addEventListener['click', handleClick]; }
EventTarget
Lỗi đầu tiên xảy ra do loại của đối tượng target
là
function handleClick[event: Event] {
const { target } = event
console.log[target.value];
}
const button = document.querySelector['button'];
if [button] {
button.addEventListener['click', handleClick];
}
3 và chúng tôi đang cố truy cập một thuộc tính trên loại nullable không được phép trong TypeScript [nếu function handleClick[event: Event] {
const { target } = event
console.log[target.value];
}
const button = document.querySelector['button'];
if [button] {
button.addEventListener['click', handleClick];
}
4 được bật]. Chúng tôi có thể khắc phục lỗi này bằng cách thu hẹp loại chỉ còn EventTarget
thông qua một bộ bảo vệ loạifunction handleClick[event: Event] {
const { target } = event
if [target] console.log[target.value];
}
Lỗi thứ hai xảy ra do loại của đối tượng target
hiện là EventTarget
và loại này chỉ có ba phương thức.
function handleClick[event: Event] {
const { target } = event
console.log[target.value];
}
const button = document.querySelector['button'];
if [button] {
button.addEventListener['click', handleClick];
}
8, function handleClick[event: Event] {
const { target } = event
console.log[target.value];
}
const button = document.querySelector['button'];
if [button] {
button.addEventListener['click', handleClick];
}
9 và function handleClick[event: Event] {
const { target } = event
if [target] console.log[target.value];
}
0. Khi bạn cố gắng truy cập bất kỳ thuộc tính nào khác trên đối tượng target
, nó sẽ báo lỗi vì thuộc tính đó sẽ không được nhận dạng trong loại EventTarget
Mã VS cung cấp tính năng tự động hoàn thành cho các thuộc tính hợp lệ trên EventTarget
Nhưng chúng tôi biết rằng phần tử target
là một nút trong trường hợp này, vì vậy chúng tôi cần truyền thông tin đó tới TypeScript để nó có thể cho phép chúng tôi truy cập các thuộc tính hợp lệ cho
function handleClick[event: Event] {
const { target } = event
if [target] console.log[target.value];
}
4, loại phù hợp cho các phần tử nút trong TypeScriptLoại EventTarget
không kế thừa từ
function handleClick[event: Event] {
const { target } = event
if [target] console.log[target.value];
}
6 theo mặc định vì các phần tử HTML không phải là thứ duy nhất có thể là mục tiêu sự kiện. Bạn có quyền xác định loại đối tượng phù hợp của target
trước khi TypeScript có thể cho phép bạn truy cập bất kỳ thuộc tính nào không tìm thấy trên EventTarget
Một cách để sửa lỗi này là gõ cast đối tượng target
bằng từ khóa
function handleClick[event: Event] {
const { target } = event
if [target] console.log[[target as HTMLButtonElement].value];
}
0function handleClick[event: Event] {
const { target } = event
if [target] console.log[[target as HTMLButtonElement].value];
}
Hoặc bạn có thể ép kiểu từ
function handleClick[event: Event] {
const { target } = event
if [target] console.log[[target as HTMLButtonElement].value];
}
1 thành function handleClick[event: Event] {
const { target } = event
if [target] console.log[target.value];
}
4 khi tạo biến target
function handleClick[event: Event] {
const target = event.target as HTMLButtonElement;
if [target] console.log[target.value];
}
Dù bằng cách nào, mã biên dịch bởi vì bạn đã yêu cầu trình biên dịch coi đối tượng target
là một
function handleClick[event: Event] {
const { target } = event
if [target] console.log[target.value];
}
4 để nó cho phép bạn truy cập thuộc tính function handleClick[event: Event] {
const { target } = event
console.log[target.value];
}
const button = document.querySelector['button'];
if [button] {
button.addEventListener['click', handleClick];
}
0 vì nó tồn tại trên loạiMột cách khác là xác định loại của đối tượng target
trong hàm gọi lại bằng cách sử dụng toán tử giao cắt loại
function handleClick[event: Event] {
const { target } = event
if [target] console.log[[target as HTMLButtonElement].value];
}
8function handleClick[event: Event & {
target: HTMLButtonElement
}] {
const { target } = event
console.log[target.value];
}
Điều này có nghĩa là chúng ta không cần sử dụng loại bảo vệ vì loại của target
không bao gồm null
và loại của các thuộc tính khác trên đối tượng
function handleClick[event: Event] {
const target = event.target as HTMLButtonElement;
if [target] console.log[target.value];
}
1 không thay đổiNếu bạn cần làm điều này thường xuyên, bạn có thể trừu tượng hóa mẫu này thành loại riêng của nó bằng cách mở rộng loại
function handleClick[event: Event] {
const { target } = event
if [target] console.log[target.value];
}
6 với các khái quáttype HTMLElementEvent = Event & {
target: T;
}
function handleClick[event: HTMLElementEvent] {
const { target } = event
console.log[target.value];
}
Bây giờ, nếu bạn cần truy cập mục tiêu sự kiện trong ngữ cảnh khác, tất cả những gì bạn cần làm là thay thế loại
function handleClick[event: Event] {
const { target } = event
if [target] console.log[target.value];
}
4 bằng loại phù hợp cho phần tử