gpt4 book ai didi

TypeScript 检查空字符串

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:16 26 4
gpt4 key购买 nike

有没有办法让 TypeScript 静态检查空字符串?有没有办法静态要求将非空字符串传递给函数?

let fn = function(a:string){

};

fn('');

let a = '';
fn(a);

TS 可以帮助我们吗?

最佳答案

我相信这与您将只使用打字系统(而不是使用“nonEmptyString”类)一样接近

type nonEmptyString = never; // Cannot be implicitly cast to
function isNonEmptyString(str: string): str is nonEmptyString {
return str && str.length > 0; // Or any other logic, removing whitespace, etc.
}

测试它:

let fn = function(a: nonEmptyString) {

}

let someStr = '';
if (isNonEmptyString(someStr)) {
fn(someStr); // Valid
} else {
fn(someStr); // Compile error
}

不幸的是,由于 nonEmptyStringnever,所以您最终会遇到问题。这意味着您需要将 nonEmptyString 显式转换回 string

let fn = function(a: nonEmptyString) {
let len = a.length; // Invalid
let len2 = (<string>a).length; // Valid
let str = a + 'something else'; // Valid (str is now typed as string)
}

一个可能的解决方案是:

type nonEmptyString = string & { __nonEmptyStr: never };

这减轻了必须显式转换回字符串的问题(上面所有三个测试都是有效的),但是确实用 __nonEmptyStr 污染了类型(这将是 undefined 如果被引用)。

关于TypeScript 检查空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44688840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com