2017-04-25 42 views
0

我的情況:類型檢查的打字稿一串代碼

  • 我有一個包含了API響應類型的信息庫。 (例如:獲取用戶對象返回一個對象{ id: number, name: string })。
  • 我想驗證我是否正確寫入了我的類型,並在API更改時發現任何問題。

什麼我迄今所做的:

我有一些生成代碼打字稿,基本上從API中提取數據,然後看是否打字稿編譯同意其接口相匹配的程序。

最終結果看上去像:

import { User } from './user'; 

function verify<T>(data: T) {} 

verify<User>({ id: 123, name: 'Joe' }); 
verify<User>({ id: 123, name: 17 }); // <-- obviously, this should give an error 

生成該代碼全部完成,但是我現在需要讓編譯器類型檢查。我一直在打字稿編譯器API一段時間,並繼續陷入困境,因爲所有似乎做我所需要的功能都採取文件名(即:磁盤上的路徑)而不是一串代碼。我明白,由於引用其他文件,需要有一個與代碼相關的路徑,但我找不到任何方式將其傳入。

我想避免必須將這些文件寫入磁盤,因爲

一)似乎有點傻,因爲它只是將是從磁盤讀取然後
二)它可能會獲得在源文件中相當混亂,或我必須把它放在一個單獨的文件夾,然後重寫所有的導入語句。

的TL,我的問題的DR爲:

有沒有辦法爲類型檢查的打字稿一串代碼?

+0

我相信你必須掛鉤[TypeScript語言服務](https://github.com/Microsoft/TypeScript/wiki/Using-the-Language-Service-API)。 –

+0

具體而言,「對於不想選擇增量解析的用戶,請使用'ts.ScriptSnapshot.fromString()'」 –

+0

@SeanVieira確定,但那又如何?我有一個快照...和? – nickf

回答

1

兩種解決方案

不用寫JS磁盤只是TS

運行,我想,以避免將這些文件寫入到磁盤,因爲

您可以使用ts-nodehttps://github.com/TypeStrong/ts-node

檢查字符串js

A JS的字符串很容易檢查。只需使用編譯器API中的ts.transpile即可。這說... 你不想檢查只是一串js。你想檢查一組文件。因此建議只使用ts節點。