说,我有一个带字符串的函数,并确保它是一个有效的uri:
function checkUri(input: string): Uri {
}
是否有可能以这种checkUri方法只能发出这种新类型Uri
,即使我真的只想让它成为一个字符串?
我的最终目标是我想定义一堆具有Uri
属性的类型,并且我想通过我的类型系统强制执行验证。
因此,从外部看,Uri
类型的外观和行为类似于一个保证已经过验证的不可变字符串。
答案 0 :(得分:1)
要展开我的评论(其中拼写错误opaque
),here's an try flow example:
// declaring in the try makes it act as if it were imported, but I'll just import here
import { checkUri, type Uri } from 'some-file';
function useUri(uri: Uri): void {}
// $ExpectError
useUri('some string')
// this one works
useUri(checkUri('some string'))