Tìm kiếm trang web

angular - Thuộc tính 'replaceAll' không tồn tại trên kiểu 'string'


Tôi muốn sử dụng replaceAll trong typescript và angular 10.

Nhưng tôi nhận được lỗi này: Thuộc tính 'replaceAll' không tồn tại trên kiểu 'string'.

Đây là mã của tôi:

let date="1399/06/08"
console.log(date.replaceAll('/', '_'))

Đầu ra: 13990608

Làm thế nào để sửa TypeScript của tôi để hiển thị cho tôi hàm này?

Câu trả lời #1

Bạn nên có thể thêm những kiểu định dạng đó thông qua tsconfig.json của bạn. Thêm "ES2021.String" vào lib bên trong compilerOptions.

Tsconfig của bạn sau đó nên trông giống như sau:

{
    ...,
    "compilerOptions": {
        ...,
        "lib": [
          ...,
          "ES2021.String"
        ]
    }
}

Phương thức replaceAll được định nghĩa bên trong lib.es2021.string.d.ts như sau:

interface String {
    /**
     * Replace all instances of a substring in a string, using a regular expression or search string.
     * @param searchValue A string to search for.
     * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.
     */
    replaceAll(searchValue: string | RegExp, replaceValue: string): string;

    /**
     * Replace all instances of a substring in a string, using a regular expression or search string.
     * @param searchValue A string to search for.
     * @param replacer A function that returns the replacement text.
     */
    replaceAll(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;
}

Câu trả lời #2

Bạn có thể giải quyết vấn đề bằng cách sử dụng RegExp và cờ toàn cục. Cờ toàn cục là thứ làm cho replace chạy trên tất cả các lần xuất hiện.

"1399/06/08".replace(/\//g, "_") // "1399_06_08"

Câu trả lời #3

Từ các tài liệu:

Tính đến tháng 8 năm 2020, phương thức replaceAll() được Firefox hỗ trợ nhưng không được Chrome hỗ trợ. Nó sẽ có sẵn trong Chrome 85.

Trong khi đó, bạn có thể tìm thấy nhiều phương pháp khác ở đây.

Ảnh chụp màn hình cho những độc giả có thể đọc sau này:

Câu trả lời số 4

Điều đó là vì TypeScript không nhận ra các phương thức mới hơn so với phiên bản JavaScript hiện tại của nó. String.replaceAll() được định nghĩa trong ES2021.

Bạn phải thêm lib trong compilerOptions, trong tệp tsconfig.json.

Giá trị của lib phải là một trong các giá trị sau: ["ES2021"], hoặc cụ thể là chuỗi kiểu ["ES2021.String"].

Thêm các mục sau vào tệp tsconfig.json:

{
  ...
  "compilerOptions": {
    "lib": ["ES2021"]
  ...
}

Câu trả lời số 5

Chỉ cần sử dụng chức năng này

    let date="1399/06/08"
    
    console.log(date.split('/').join('_'))

Bài viết liên quan