Nhóm của tôi làm việc trên một dự án NodeJS tương đối lớn, được viết bằng ES6, được chồng chéo bởi babel, và sau đó được triển khai dưới dạng AWS lambdas với Serverless. Dự án này tập trung vào việc tiêu thụ, ánh xạ/chuyển đổi và xuất ra một loại đối tượng cụ thể mà chúng tôi đã xác định.Có thể sử dụng các định nghĩa kiểu tùy chỉnh trong dự án ES6 không?
Vấn đề của chúng tôi là, ECMA/JavaScript không được gõ mạnh, vì vậy nếu chúng ta mắc lỗi như xử lý trường dưới dạng mảng ở đâu đó và chuỗi ở nơi khác, không có gì để bắt ngoại trừ lỗi thời gian chạy. Chúng tôi cũng đã ghi lại cấu trúc của đối tượng này, vì vậy đôi khi người tiêu dùng gửi cho chúng tôi các cá thể của đối tượng có dữ liệu trong các trường có tên sai mà chúng tôi nói rằng chúng tôi xử lý nhưng không thực sự sử dụng.
Tôi đang tìm cách tạo một số loại định nghĩa lược đồ hoặc loại cho đối tượng cụ thể này trong dự án của chúng tôi, để chúng tôi có thể sử dụng điều đó để sửa mã của chúng tôi, giúp quá trình xử lý của chúng tôi trở nên mạnh mẽ hơn và tạo tài liệu tốt hơn cho nó . Bây giờ, tôi biết VSCode cung cấp một số basic type checking trong JavaScript, nhưng tôi không nghĩ rằng nó khả thi để thử JSDoc một đối tượng thực sự lớn và sau đó đặt tài liệu đó trong mọi tệp sử dụng đối tượng. Tôi đã tìm thấy rằng VSCode cũng có thể, bằng cách nào đó, lái xe mà kiểm tra with .d.ts files nhưng tôi không hiểu nếu hoặc làm thế nào tôi có thể tận dụng cho một đối tượng cụ thể, tùy chỉnh mà chúng tôi đã thiết kế. Hầu hết những gì tôi đã tìm thấy có vẻ liên quan đặc biệt đến việc kéo các tệp .d.ts cho các thư viện bên ngoài.
Vì vậy, TL: DR, Có thể, trong một dự án NodeJS/ES6, để tạo một đối tượng, được sử dụng rộng rãi trong suốt dự án đó, được đánh máy mạnh mẽ? Lỗi kiểm tra trong VSCode sẽ được chấp nhận, nhưng một số loại dòng lệnh linting mà chúng ta có thể kích hoạt trước khi transpiling cũng sẽ rất tuyệt.
Trong JavaScript, không. Chuyển đổi mọi thứ thành TypeScript, sau đó * có thể *, mặc dù bạn không thể làm được nhiều về mã bên ngoài truyền một đối tượng bị cắt vào API của bạn ngoài việc xác thực nó một cách rõ ràng. – Pointy
Vấn đề của bạn chính xác là lý do tại sao các bản ghi tồn tại. Bạn có thể viết "một đối tượng" của bạn trong bản ghi và sử dụng đối tượng đó trong các tệp javascript khác. Có kiểu chữ phát ra một tệp khai báo với tùy chọn [trình biên dịch '--declaration'] (https://www.typescriptlang.org/docs/handbook/compiler-options.html) và tôi nghĩ khi bạn' yêu cầu 'các js đã biên dịch, vscode sẽ phát hiện các kiểu gõ. Ngoài ra còn có một tùy chọn trình biên dịch để ['checkJS' phát ra các lỗi loại cho các tệp javascript] (https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html#errors-in- js-files-với --- checkjs). –
[Điều này cũng giúp ích một chút.] (Https://github.com/Microsoft/TypeScript/wiki/Type-Checking-JavaScript-Files) –